{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对应 `tf.keras` 的01~02章节"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:27:08.106943Z",
     "start_time": "2025-01-24T11:27:08.101241Z"
    }
   },
   "source": [
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import sklearn\n",
    "import pandas as pd\n",
    "import os\n",
    "import sys\n",
    "import time\n",
    "from tqdm.auto import tqdm\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "print(sys.version_info)\n",
    "for module in mpl, np, pd, sklearn, torch:\n",
    "    print(module.__name__, module.__version__)\n",
    "    \n",
    "device = torch.device(\"cuda:0\") if torch.cuda.is_available() else torch.device(\"cpu\")\n",
    "print(device)"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sys.version_info(major=3, minor=12, micro=3, releaselevel='final', serial=0)\n",
      "matplotlib 3.10.0\n",
      "numpy 1.26.4\n",
      "pandas 2.2.3\n",
      "sklearn 1.6.1\n",
      "torch 2.5.1+cpu\n",
      "cpu\n"
     ]
    }
   ],
   "execution_count": 6
  },
  {
   "cell_type": "code",
   "source": "28*28",
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-01-24T11:27:42.757210Z",
     "start_time": "2025-01-24T11:27:42.753066Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "784"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 8
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据准备"
   ]
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": " ### 先不转tensor，先看看数据集的样子"
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:37:26.047679Z",
     "start_time": "2025-01-24T11:37:26.004188Z"
    }
   },
   "source": [
    "from torchvision import datasets\n",
    "from torchvision.transforms import ToTensor\n",
    "from torchvision import transforms\n",
    "\n",
    "\n",
    "# 定义数据集的变换\n",
    "transform = transforms.Compose([\n",
    "    # transforms.ToTensor(), # 转换为tensor，进行归一化\n",
    "    # transforms.Normalize(mean, std) # 标准化，mean和std是数据集的均值和方差\n",
    "])\n",
    "# fashion_mnist图像分类数据集，衣服分类，60000张训练图片，10000张测试图片\n",
    "train_ds = datasets.FashionMNIST(\n",
    "    root=\"data\",\n",
    "    train=True,\n",
    "    download=True,\n",
    "    transform=transform\n",
    ")\n",
    "\n",
    "test_ds = datasets.FashionMNIST(\n",
    "    root=\"data\",\n",
    "    train=False,\n",
    "    download=True,\n",
    "    transform=transform\n",
    ")\n",
    "\n",
    "# torchvision 数据集里没有提供训练集和验证集的划分\n",
    "# 当然也可以用 torch.utils.data.Dataset 实现人为划分"
   ],
   "outputs": [],
   "execution_count": 24
  },
  {
   "cell_type": "code",
   "source": [
    "print(type(train_ds))\n",
    "print(len(train_ds))  # 60000个样本\n",
    "print(type(train_ds[0]))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-01-24T11:37:26.407730Z",
     "start_time": "2025-01-24T11:37:26.403926Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'torchvision.datasets.mnist.FashionMNIST'>\n",
      "60000\n",
      "<class 'tuple'>\n"
     ]
    }
   ],
   "execution_count": 25
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:37:27.761784Z",
     "start_time": "2025-01-24T11:37:27.758192Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 通过id取数据，取到的是一个元祖,是第一个样本,在训练时，把特征和标签分开\n",
    "img, label = train_ds[0]\n",
    "print(type(img))"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'PIL.Image.Image'>\n"
     ]
    }
   ],
   "execution_count": 26
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:38:54.064437Z",
     "start_time": "2025-01-24T11:38:54.061091Z"
    }
   },
   "cell_type": "code",
   "source": "img",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<PIL.Image.Image image mode=L size=28x28>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAACS0lEQVR4AWKgA2BkYOD1ZGBgZAHZxcjIAKZBbBBm+quS8v3rj1N/GBiZGP8wMKNIMv91cnnCzuU65+X/vww8/76hSP5iMFVgZtpp2HXm8nUz02PHGUHGQTHjf9cugd//GE7f+cUo8ft0yDSEJCMDw/8TCgyMf34x/Ph3/vYfT0VphLH/GRgY3kt+Z2fl+cH5z8aSSWwHqmsZuJiZvn18p/CPkYnr7z9ZBiaofQwMjMwMPFI/frH++sr/j537K9sldhOE5H9mhnBJJg4Gbtlf7L//cQhvusaCkGT5xXDlBxsXl6rSD2Yunr9PoraeYAGZx8T4+x/DHwaGbV+/s/1/zczxm+H3P2a9jwxMDMz///z6+Y+BwW7ime9v//z78/XrXw6GbwxsX4NAYc3AICSlJhmk/oPpN+czVjbhX1zHeOz+fWR9qcnIYNkkKvCX+cMfrl+M36+HneEVVGC4x/v5GycPHxcj83GpP3+/MTB/Z2DgF0lwy3z24/49VeFfrLxsf+UBY0xqv8vDw87Ayv/4mSiTRACHIrexMdMvJjYGRlYLlpeP+X485mHje/eQ5/uPP+svKwj9+vD77y/Wf4xsaixP/z/mFvnw5jULOysHL9Mbza+P37O/+f3nN6fERwOWC+sTn937wcPGwcb88+//by/+/WX5wfPrw4fffxRfMjIweBWLv/7wl5mNhZnxPysrGysjA+NLBrZ/EpfCGJn+MTA4tYnxMzGz/GV8+f/pvy/MDP9/f2Paff0YJBAYGBg0RN/LPPx1Fx5HFDIAaCTYdiCc4RIAAAAASUVORK5CYII=",
      "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAAcABwBAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APn+tbw1oNx4m8QWmkWx2yXD4LkZCADJJ+gFbviL4a63oc7COE3MW4hdn38duD976jNc9daDqllIsc9lKrMu4YGeMkdR7gj8KzcV7H8BtEvV16+1iWCeG1Wz8mOV02pIzupwCeuAp6Z98cZ90aIzLIlw0c0ZJ4KgjHoeOa+evjS9n/wnMcNxBPCYLKONFhA2FNzMpGenDcgd816V4K03wefC+m3NlpVhP+5QSXBiR5fMx825iMg5zwce3FdbOzTwgW90lu6uCm8eYrL02soIyCPQgggEdMGQ3cluiPNK0rJwrRQBNueuMkt+teNfGKxsdY8WWdxNqcNo66eieXMwVsb5DnH415Hp2rajpE5n02/urOUjBe3laMkehIPIrVm8eeLrhNknibVivoLtx/I1UPinxC3XXtUP1vJP8ay5JZJpGkldnduSzHJP41//2Q=="
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 31
  },
  {
   "cell_type": "code",
   "source": [
    "print(label)\n",
    "print(type(label))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-01-24T11:39:31.219185Z",
     "start_time": "2025-01-24T11:39:31.216086Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9\n",
      "<class 'int'>\n"
     ]
    }
   ],
   "execution_count": 33
  },
  {
   "cell_type": "code",
   "source": [
    "# 显示图片，这里需要把transforms.ToTensor(),进行归一化注释掉，否则是看不了图的\n",
    "def show_img_content(img):\n",
    "    from PIL import Image\n",
    "\n",
    "    # 打开一个图像文件\n",
    "    # img = Image.open(img)\n",
    "    print(\"图像大小:\", img.size)  # 28*28像素\n",
    "    print(\"图像模式:\", img.mode)  # L表示灰度图\n",
    "    # 如果图像是单通道的，比如灰度图，你可以这样获取像素值列表：\n",
    "    if img.mode == 'L':\n",
    "        pixel_values = list(img.getdata())\n",
    "        print(pixel_values)\n",
    " \n",
    "\n",
    "show_img_content(img) # 这里必须把上面的 transforms.ToTensor()注释掉，否则是不行的"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-01-24T11:41:03.347640Z",
     "start_time": "2025-01-24T11:41:03.343134Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "图像大小: (28, 28)\n",
      "图像模式: L\n",
      "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 73, 0, 0, 1, 4, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 36, 136, 127, 62, 54, 0, 0, 0, 1, 3, 4, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 102, 204, 176, 134, 144, 123, 23, 0, 0, 0, 0, 12, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 236, 207, 178, 107, 156, 161, 109, 64, 23, 77, 130, 72, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 69, 207, 223, 218, 216, 216, 163, 127, 121, 122, 146, 141, 88, 172, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 200, 232, 232, 233, 229, 223, 223, 215, 213, 164, 127, 123, 196, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 225, 216, 223, 228, 235, 227, 224, 222, 224, 221, 223, 245, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 228, 218, 213, 198, 180, 212, 210, 211, 213, 223, 220, 243, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 12, 219, 220, 212, 218, 192, 169, 227, 208, 218, 224, 212, 226, 197, 209, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 99, 244, 222, 220, 218, 203, 198, 221, 215, 213, 222, 220, 245, 119, 167, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 55, 236, 228, 230, 228, 240, 232, 213, 218, 223, 234, 217, 217, 209, 92, 0, 0, 0, 1, 4, 6, 7, 2, 0, 0, 0, 0, 0, 237, 226, 217, 223, 222, 219, 222, 221, 216, 223, 229, 215, 218, 255, 77, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 62, 145, 204, 228, 207, 213, 221, 218, 208, 211, 218, 224, 223, 219, 215, 224, 244, 159, 0, 0, 0, 0, 0, 18, 44, 82, 107, 189, 228, 220, 222, 217, 226, 200, 205, 211, 230, 224, 234, 176, 188, 250, 248, 233, 238, 215, 0, 0, 57, 187, 208, 224, 221, 224, 208, 204, 214, 208, 209, 200, 159, 245, 193, 206, 223, 255, 255, 221, 234, 221, 211, 220, 232, 246, 0, 3, 202, 228, 224, 221, 211, 211, 214, 205, 205, 205, 220, 240, 80, 150, 255, 229, 221, 188, 154, 191, 210, 204, 209, 222, 228, 225, 0, 98, 233, 198, 210, 222, 229, 229, 234, 249, 220, 194, 215, 217, 241, 65, 73, 106, 117, 168, 219, 221, 215, 217, 223, 223, 224, 229, 29, 75, 204, 212, 204, 193, 205, 211, 225, 216, 185, 197, 206, 198, 213, 240, 195, 227, 245, 239, 223, 218, 212, 209, 222, 220, 221, 230, 67, 48, 203, 183, 194, 213, 197, 185, 190, 194, 192, 202, 214, 219, 221, 220, 236, 225, 216, 199, 206, 186, 181, 177, 172, 181, 205, 206, 115, 0, 122, 219, 193, 179, 171, 183, 196, 204, 210, 213, 207, 211, 210, 200, 196, 194, 191, 195, 191, 198, 192, 176, 156, 167, 177, 210, 92, 0, 0, 74, 189, 212, 191, 175, 172, 175, 181, 185, 188, 189, 188, 193, 198, 204, 209, 210, 210, 211, 188, 188, 194, 192, 216, 170, 0, 2, 0, 0, 0, 66, 200, 222, 237, 239, 242, 246, 243, 244, 221, 220, 193, 191, 179, 182, 182, 181, 176, 166, 168, 99, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 61, 44, 72, 41, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n"
     ]
    }
   ],
   "execution_count": 36
  },
  {
   "cell_type": "code",
   "source": [
    "# 这个代码必须是注释了上面的 transforms.ToTensor()才能够运行的\n",
    "def show_single_image(img_arr):\n",
    "    plt.imshow(img_arr, cmap=\"binary\") # 显示图片\n",
    "    plt.colorbar() # 显示颜色条\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "show_single_image(img)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-01-24T11:41:54.637974Z",
     "start_time": "2025-01-24T11:41:54.536709Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 37
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "### 转tensor"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:42:44.904821Z",
     "start_time": "2025-01-24T11:42:44.861843Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from torchvision import datasets\n",
    "from torchvision.transforms import ToTensor\n",
    "from torchvision import transforms\n",
    "\n",
    "\n",
    "# 定义数据集的变换\n",
    "transform = transforms.Compose([\n",
    "    transforms.ToTensor(), # 转换为tensor，进行归一化\n",
    "    # transforms.Normalize(mean, std) # 标准化，mean和std是数据集的均值和方差\n",
    "])\n",
    "# fashion_mnist图像分类数据集，衣服分类，60000张训练图片，10000张测试图片\n",
    "train_ds = datasets.FashionMNIST(\n",
    "    root=\"data\",\n",
    "    train=True,\n",
    "    download=True,\n",
    "    transform=transform\n",
    ")\n",
    "\n",
    "test_ds = datasets.FashionMNIST(\n",
    "    root=\"data\",\n",
    "    train=False,\n",
    "    download=True,\n",
    "    transform=transform\n",
    ")\n",
    "\n",
    "# torchvision 数据集里没有提供训练集和验证集的划分\n",
    "# 当然也可以用 torch.utils.data.Dataset 实现人为划分"
   ],
   "outputs": [],
   "execution_count": 38
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:42:47.322039Z",
     "start_time": "2025-01-24T11:42:47.318020Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 通过id取数据，取到的是一个元祖,是第一个样本,在训练时，把特征和标签分开\n",
    "img, label = train_ds[0]\n",
    "img.shape\n",
    "# img.shape = (1, 28, 28)，这是因为通道数在最前面"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 28, 28])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 39
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:43:00.789222Z",
     "start_time": "2025-01-24T11:43:00.785358Z"
    }
   },
   "cell_type": "code",
   "source": "type(img) #tensor中文是 张量,和numpy的ndarray类似",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Tensor"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 41
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:43:07.223332Z",
     "start_time": "2025-01-24T11:43:07.216886Z"
    }
   },
   "cell_type": "code",
   "source": "img[0] # 28x28的图片，每个像素值在0-1之间  ",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0039, 0.0000, 0.0000, 0.0510, 0.2863, 0.0000,\n",
       "         0.0000, 0.0039, 0.0157, 0.0000, 0.0000, 0.0000, 0.0000, 0.0039, 0.0039,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0118, 0.0000, 0.1412, 0.5333, 0.4980, 0.2431,\n",
       "         0.2118, 0.0000, 0.0000, 0.0000, 0.0039, 0.0118, 0.0157, 0.0000, 0.0000,\n",
       "         0.0118],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0235, 0.0000, 0.4000, 0.8000, 0.6902, 0.5255,\n",
       "         0.5647, 0.4824, 0.0902, 0.0000, 0.0000, 0.0000, 0.0000, 0.0471, 0.0392,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.6078, 0.9255, 0.8118, 0.6980,\n",
       "         0.4196, 0.6118, 0.6314, 0.4275, 0.2510, 0.0902, 0.3020, 0.5098, 0.2824,\n",
       "         0.0588],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0039, 0.0000, 0.2706, 0.8118, 0.8745, 0.8549, 0.8471,\n",
       "         0.8471, 0.6392, 0.4980, 0.4745, 0.4784, 0.5725, 0.5529, 0.3451, 0.6745,\n",
       "         0.2588],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0039, 0.0039, 0.0039, 0.0000, 0.7843, 0.9098, 0.9098, 0.9137, 0.8980,\n",
       "         0.8745, 0.8745, 0.8431, 0.8353, 0.6431, 0.4980, 0.4824, 0.7686, 0.8980,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.7176, 0.8824, 0.8471, 0.8745, 0.8941,\n",
       "         0.9216, 0.8902, 0.8784, 0.8706, 0.8784, 0.8667, 0.8745, 0.9608, 0.6784,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.7569, 0.8941, 0.8549, 0.8353, 0.7765,\n",
       "         0.7059, 0.8314, 0.8235, 0.8275, 0.8353, 0.8745, 0.8627, 0.9529, 0.7922,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0039, 0.0118, 0.0000, 0.0471, 0.8588, 0.8627, 0.8314, 0.8549, 0.7529,\n",
       "         0.6627, 0.8902, 0.8157, 0.8549, 0.8784, 0.8314, 0.8863, 0.7725, 0.8196,\n",
       "         0.2039],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0235, 0.0000, 0.3882, 0.9569, 0.8706, 0.8627, 0.8549, 0.7961,\n",
       "         0.7765, 0.8667, 0.8431, 0.8353, 0.8706, 0.8627, 0.9608, 0.4667, 0.6549,\n",
       "         0.2196],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0157, 0.0000, 0.0000, 0.2157, 0.9255, 0.8941, 0.9020, 0.8941, 0.9412,\n",
       "         0.9098, 0.8353, 0.8549, 0.8745, 0.9176, 0.8510, 0.8510, 0.8196, 0.3608,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0039, 0.0157, 0.0235, 0.0275, 0.0078, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.9294, 0.8863, 0.8510, 0.8745, 0.8706, 0.8588,\n",
       "         0.8706, 0.8667, 0.8471, 0.8745, 0.8980, 0.8431, 0.8549, 1.0000, 0.3020,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0118, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.2431, 0.5686, 0.8000, 0.8941, 0.8118, 0.8353, 0.8667, 0.8549, 0.8157,\n",
       "         0.8275, 0.8549, 0.8784, 0.8745, 0.8588, 0.8431, 0.8784, 0.9569, 0.6235,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0706, 0.1725, 0.3216, 0.4196, 0.7412,\n",
       "         0.8941, 0.8627, 0.8706, 0.8510, 0.8863, 0.7843, 0.8039, 0.8275, 0.9020,\n",
       "         0.8784, 0.9176, 0.6902, 0.7373, 0.9804, 0.9725, 0.9137, 0.9333, 0.8431,\n",
       "         0.0000],\n",
       "        [0.0000, 0.2235, 0.7333, 0.8157, 0.8784, 0.8667, 0.8784, 0.8157, 0.8000,\n",
       "         0.8392, 0.8157, 0.8196, 0.7843, 0.6235, 0.9608, 0.7569, 0.8078, 0.8745,\n",
       "         1.0000, 1.0000, 0.8667, 0.9176, 0.8667, 0.8275, 0.8627, 0.9098, 0.9647,\n",
       "         0.0000],\n",
       "        [0.0118, 0.7922, 0.8941, 0.8784, 0.8667, 0.8275, 0.8275, 0.8392, 0.8039,\n",
       "         0.8039, 0.8039, 0.8627, 0.9412, 0.3137, 0.5882, 1.0000, 0.8980, 0.8667,\n",
       "         0.7373, 0.6039, 0.7490, 0.8235, 0.8000, 0.8196, 0.8706, 0.8941, 0.8824,\n",
       "         0.0000],\n",
       "        [0.3843, 0.9137, 0.7765, 0.8235, 0.8706, 0.8980, 0.8980, 0.9176, 0.9765,\n",
       "         0.8627, 0.7608, 0.8431, 0.8510, 0.9451, 0.2549, 0.2863, 0.4157, 0.4588,\n",
       "         0.6588, 0.8588, 0.8667, 0.8431, 0.8510, 0.8745, 0.8745, 0.8784, 0.8980,\n",
       "         0.1137],\n",
       "        [0.2941, 0.8000, 0.8314, 0.8000, 0.7569, 0.8039, 0.8275, 0.8824, 0.8471,\n",
       "         0.7255, 0.7725, 0.8078, 0.7765, 0.8353, 0.9412, 0.7647, 0.8902, 0.9608,\n",
       "         0.9373, 0.8745, 0.8549, 0.8314, 0.8196, 0.8706, 0.8627, 0.8667, 0.9020,\n",
       "         0.2627],\n",
       "        [0.1882, 0.7961, 0.7176, 0.7608, 0.8353, 0.7725, 0.7255, 0.7451, 0.7608,\n",
       "         0.7529, 0.7922, 0.8392, 0.8588, 0.8667, 0.8627, 0.9255, 0.8824, 0.8471,\n",
       "         0.7804, 0.8078, 0.7294, 0.7098, 0.6941, 0.6745, 0.7098, 0.8039, 0.8078,\n",
       "         0.4510],\n",
       "        [0.0000, 0.4784, 0.8588, 0.7569, 0.7020, 0.6706, 0.7176, 0.7686, 0.8000,\n",
       "         0.8235, 0.8353, 0.8118, 0.8275, 0.8235, 0.7843, 0.7686, 0.7608, 0.7490,\n",
       "         0.7647, 0.7490, 0.7765, 0.7529, 0.6902, 0.6118, 0.6549, 0.6941, 0.8235,\n",
       "         0.3608],\n",
       "        [0.0000, 0.0000, 0.2902, 0.7412, 0.8314, 0.7490, 0.6863, 0.6745, 0.6863,\n",
       "         0.7098, 0.7255, 0.7373, 0.7412, 0.7373, 0.7569, 0.7765, 0.8000, 0.8196,\n",
       "         0.8235, 0.8235, 0.8275, 0.7373, 0.7373, 0.7608, 0.7529, 0.8471, 0.6667,\n",
       "         0.0000],\n",
       "        [0.0078, 0.0000, 0.0000, 0.0000, 0.2588, 0.7843, 0.8706, 0.9294, 0.9373,\n",
       "         0.9490, 0.9647, 0.9529, 0.9569, 0.8667, 0.8627, 0.7569, 0.7490, 0.7020,\n",
       "         0.7137, 0.7137, 0.7098, 0.6902, 0.6510, 0.6588, 0.3882, 0.2275, 0.0000,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.1569, 0.2392,\n",
       "         0.1725, 0.2824, 0.1608, 0.1373, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000],\n",
       "        [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
       "         0.0000]])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 42
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(tensor([0.2860]), tensor([0.3205]))\n"
     ]
    }
   ],
   "execution_count": 40,
   "source": [
    "# 计算均值和方差\n",
    "def cal_mean_std(ds):\n",
    "    mean = 0.\n",
    "    std = 0.\n",
    "    for img, _ in ds: # 遍历每张图片,img.shape=[1,28,28]\n",
    "        mean += img.mean(dim=(1, 2))\n",
    "        std += img.std(dim=(1, 2))\n",
    "    mean /= len(ds)\n",
    "    std /= len(ds)\n",
    "    return mean, std\n",
    "\n",
    "\n",
    "print(cal_mean_std(train_ds))"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:49:05.991263Z",
     "start_time": "2025-01-24T11:49:05.739935Z"
    }
   },
   "source": [
    "def show_imgs(n_rows, n_cols, train_ds, class_names):\n",
    "    assert n_rows * n_cols < len(train_ds)  #确保打印的图片小于总样本数\n",
    "    plt.figure(figsize = (n_cols * 1.4, n_rows * 1.6))  #宽1.4高1.6，宽，高\n",
    "    for row in range(n_rows):\n",
    "        for col in range(n_cols):\n",
    "            index = n_cols * row + col  # 计算索引，从0开始\n",
    "            plt.subplot(n_rows, n_cols, index+1)  # 因为从1开始\n",
    "            img_arr, label = train_ds[index]\n",
    "            img_arr = np.transpose(img_arr, (1, 2, 0))  # 通道换到最后一维(接口要求必须做，宽高、样本数)\n",
    "            # binary表示黑白(灰度图用这个可以更好展示细节),interpolation='nearest'是临近插值，用最近的像素填充空白区域，保持原始像素值\n",
    "            plt.imshow(img_arr, cmap=\"binary\",interpolation = 'nearest') \n",
    "            plt.axis('off')  # 去除坐标系\n",
    "            plt.title(class_names[label]) # 显示类别名称\n",
    "    plt.show()\n",
    "    \n",
    "\n",
    "# 已知的图片类别\n",
    "# lables在这个路径https://github.com/zalandoresearch/fashion-mnist\n",
    "class_names = ['T-shirt', 'Trouser', 'Pullover', 'Dress',\n",
    "               'Coat', 'Sandal', 'Shirt', 'Sneaker',\n",
    "               'Bag', 'Ankle boot'] #0-9分别代表的类别\n",
    "# 只是打印了前15个样本\n",
    "show_imgs(3, 5, train_ds, class_names)"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 700x480 with 15 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAGMCAYAAADA5EjBAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAb4tJREFUeJztnQe41FS3hoPSe++9SRekIwqCiDQFRRFFQBRRUcGG/Cr2hogoImDFgvyi0hEFFJCuFKnSm/TeBFGQuc/KvZP7ZZ3sMOdwymTme5/nwJ7Jnkxmt+ysmi4UCoUsQgghhJAAcklaXwAhhBBCSFLhRoYQQgghgYUbGUIIIYQEFm5kCCGEEBJYuJEhhBBCSGDhRoYQQgghgYUbGUIIIYQEFm5kCCGEEBJYuJEhhBBCSGCJqo1M9+7drezZs1+wXtOmTe2/5ELOVa1atWQ7H0ketm/fbqVLl8568803L1j3+eeft+uS6IH9R0jasj1O5uBFb2SGDx9u//j69esnzxXFGa+++qo1ceJEK4hIv0fyN2fOHCuaOH36tD1po+26Uhv2X+zx6aefuvouc+bMVtGiRa2WLVtaQ4cOtU6ePJnWl0gAzsHkIf3FnuDLL7+0Spcubf3666/W5s2brfLlyyfPlcXRRqZjx45W+/btraDxxRdfuF5//vnn1syZMxO8X7ly5RS/lmeeecbq379/xJPwhRdesMvJKdkLGuy/2OXFF1+0ypQpY509e9bat2+ffcPp27ev9dZbb1mTJ0+2atSokdaXSDgHo2Mjs23bNmvhwoXW+PHjrV69etmbmueeey75ro5ENV26dHG9Xrx4sT0J9fupQfr06e0/P86fP2/9888/qXZN0Q77L3Zp1aqVVadOHef1f/7zH2vWrFlW27ZtrRtuuMFat26dlSVLFs/Pnjp1ysqWLVsqXm38wjkYBaol2bjkyZPHatOmjS1VkNd+OroPPvjAKleunJUpUyarbt261pIlSy74HStWrLAKFChg7/r+/PNPY72///7b3kSJREjOX6JECatfv372+5GybNkyq1GjRvYEl6eZkSNHJqhz4MAB6+6777YKFSpki20vv/xy67PPPvNcDB577DH7OuR6LrvsMrsNMNm4tIvUk8+HRYhiJxQvLF261BZ558+f32nzHj16eNa90Njx0u/K6wcffNAel1WrVrU/K30q40mQJ4pwu8vnSeJg/wWLZs2aWQMGDLB27NhhjR492mWXuGXLFqt169ZWjhw5rDvuuMO5ab399tt228taJ2uePLAePXo00ePgq6++smrXrm2fP2fOnFb16tWtd955JxV/fWzCOZgMEhn5cTfddJOVMWNGq3PnztaIESPsxpFG0owZM8bWz8pEkB/9xhtv2J/dunWrlSFDBs/zy7mkk+TJYtKkScYnCJlw8pQxf/58695777XFcKtXr7aGDBlibdy4MSIbFJmcMpFvvfVW+7d8/fXX1v3332//tvDA+Ouvv+wNlajQpHNl0HzzzTf2YnDs2DGrT58+dj3ZrMj1zJ4929701KxZ05o+fbr1xBNPWLt377avSxDx4T333GPVq1fPvm5BBlo8IBvC6667zp4QIs7MnTu3vekV6V5yjJ0w8hQqfSn9JZNdNp4yTqVvO3ToYJ9HoKg9cbD/gsmdd95pPfXUU9aMGTOsnj172u+dO3fOXmcbN25sP2xlzZrVfl/6S2xu7rrrLuvhhx+2JfDDhg2zfvvtN2vBggV230UyDkTCIGtq8+bNrYEDB9rviURIzhFeM0ni4RwEQklk6dKlIloIzZw50359/vz5UPHixUN9+vRx1du2bZtdL1++fKEjR44470+aNMl+f8qUKc573bp1C2XLls0uz58/P5QzZ85QmzZtQmfOnHGds0mTJvZfmC+++CJ0ySWXhObNm+eqN3LkSPs7FixY4Ptb5FxSb/Dgwc57f//9d6hmzZqhggULhv755x/7vbffftuuN3r0aKeeHGvYsGEoe/bsoRMnTtjvTZw40a738ssvu76nY8eOoXTp0oU2b97svCe/V353LNC7d2/7d0fChAkT7LpLliwx1knM2HnuuecSfLe8lnGxdu1a1/sHDx60j8lnyP/D/gs+o0aNumC/5MqVK1SrVi27LGuP1O/fv7+rjqyl8v6XX37pev+HH35wvR/JOJB7gqzl586du8hfF/twDiaNSy5GGiOixmuuucZ+Lbu8Tp062SLEf//9N0F9OSZqqDBXXXWV/b/sCDUiyZAnBNnBy+5SxFl+iFREpDCVKlWyDh065PyJKDV8vgshukHZrYYRSYy8ll2vqJyEadOmWYULF7afLsLIblaeVkTt9fPPPzv1Lr30Uvt9RFRNMja+//57K96Rpwdh6tSptkGiH4kZO5omTZpYVapU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YOFGhhBCCCGBhRsZQgghhASWmN7IbN++3UqXLp315ptvXrDu888/b9clF0f37t2t7NmzX7Be06ZN7b/kQs5VrVq1ZDsfSV0+/fRTe/7JnE3KmCtdunSKXBeJDPZffNwno5U03chI40XyN2fOHCuaOH36tL3xibbrSirDhw+327l+/fppfSmB5NVXX7UmTpxoBY3Vq1dbHTt2tEqVKmVlzpzZKlasmNWiRQvr3XffTetLIxHA/gsO7KuUJb2VhnzxxReu159//rk1c+bMBO9Xrlw5xa/lmWeesfr37x/xRuaFF16wy8kpVUgrvvzyS/uJ6Ndff7U2b95slS9fPq0vKXAbGVmk2rdvbwWFhQsXWtdcc41VsmRJq2fPnlbhwoWtnTt3WosXL7beeecd66GHHkrrSyQ+sP+CA/sqxjcyXbp0cb2WjpWNjH4/NUifPr3958f58+etf/75x4oltm3bZk+08ePHW7169bI3Nc8991xaXxZJYV555RUrV65c1pIlS6zcuXO7jh04cCDNrotEBvsvOLCvLPvhP2vWrCl2/kDbyCxdutRq2bKllT9/fitLlixWmTJlrB49enjW/eCDD6xy5cpZmTJlsurWrWsPqgvZyMjrBx980L65V61a1f7syJEjrQIFCtjHRSoTVn/J54OI/LY8efJYbdq0saUK8tpPh3qhdvRixYoVdpuJ9OrPP/801vv777/tTZRIhOT8JUqUsPr162e/HynLli2zGjVq5IwH6S+NLB533323VahQIVvMe/nll1ufffZZgnqnTp2yHnvsMfs65Houu+wyuw1CoZBTR9pF6snnw2NBdP7RzpYtW+wxrRdWoWDBgk551KhRVrNmzez3pA2qVKlijRgxIsFnRKLXtm1ba/78+Va9evXsdi1btqwtZdWsXbvWPqf0UfHixa2XX37ZfkjQTJo0yR6XRYsWtb9bxt1LL71k/fvvv1a8w/6Lvb4K329ETS32ftJm8rkffvghwed2795t3+tkDcv0f/U++eQTVx156H722Wet2rVr2xupbNmyWVdddZU1e/bsC16zrHH33nuvlTFjRvshN8zo0aPt80nf582b17rtttts6ZKXvaKsxVdffbW9gXnqqaesmJXIXAxyM7ruuuvsG6SohGSQyA0XGz3MmDFjrJMnT9oSBxksb7zxhnXTTTdZW7dutTJkyOD7PbNm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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 52
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T12:11:02.387449Z",
     "start_time": "2025-01-24T12:11:02.383277Z"
    }
   },
   "source": [
    "# 从数据集到dataloader\n",
    "train_loader = torch.utils.data.DataLoader(train_ds, batch_size=32, shuffle=True) # batch_size分批，shuffle洗牌\n",
    "val_loader = torch.utils.data.DataLoader(test_ds, batch_size=32, shuffle=False)\n",
    "print(len(train_loader))"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1875\n"
     ]
    }
   ],
   "execution_count": 65
  },
  {
   "cell_type": "markdown",
   "source": [
    "在PyTorch中，`DataLoader`是一个迭代器，它封装了数据的加载和预处理过程，使得在训练机器学习模型时可以方便地批量加载数据。`DataLoader`主要负责以下几个方面：\n",
    "\n",
    "1. **批量加载数据**：`DataLoader`可以将数据集（Dataset）切分为更小的批次（batch），每次迭代提供一小批量数据，而不是单个数据点。这有助于模型学习数据中的统计依赖性，并且可以更高效地利用GPU等硬件的并行计算能力。\n",
    "\n",
    "2. **数据打乱**：默认情况下，`DataLoader`会在每个epoch（训练周期）开始时打乱数据的顺序。这有助于模型训练时避免陷入局部最优解，并且可以提高模型的泛化能力。\n",
    "\n",
    "3. **多线程数据加载**：`DataLoader`支持多线程（通过参数`num_workers`）来并行地加载数据，这可以显著减少训练过程中的等待时间，尤其是在处理大规模数据集时。\n",
    "\n",
    "4. **数据预处理**：`DataLoader`可以与`transforms`结合使用，对加载的数据进行预处理，如归一化、标准化、数据增强等操作。\n",
    "\n",
    "5. **内存管理**：`DataLoader`负责管理数据的内存使用，确保在训练过程中不会耗尽内存资源。\n",
    "\n",
    "6. **易用性**：`DataLoader`提供了一个简单的接口，可以很容易地集成到训练循环中。\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 定义模型"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:52:20.149901Z",
     "start_time": "2025-01-24T11:52:20.139896Z"
    }
   },
   "source": [
    "class NeuralNetwork(nn.Module):\n",
    "    def __init__(self):\n",
    "        super().__init__() # 继承父类的初始化方法，子类有父类的属性\n",
    "        self.flatten = nn.Flatten()  # 展平层\n",
    "        self.linear_relu_stack = nn.Sequential(  # 矩阵运算\n",
    "            nn.Linear(784, 300),  # 输入in_features=784, out_features=300, 784是输入特征数，300是输出特征数\n",
    "            nn.ReLU(), # 激活函数\n",
    "            nn.Linear(300, 100),  # 隐藏层神经元数100\n",
    "            nn.ReLU(), # 激活函数\n",
    "            nn.Linear(100, 10),  # 输出层神经元数10\n",
    "        )\n",
    "\n",
    "    def forward(self, x): # 前向计算\n",
    "        # x.shape [batch size, 1, 28, 28]\n",
    "        x = self.flatten(x)  \n",
    "        # 展平后 x.shape [batch size, 784]\n",
    "        logits = self.linear_relu_stack(x)\n",
    "        # logits.shape [batch size, 10]\n",
    "        return logits #没有经过softmax,称为logits\n",
    "    \n",
    "model = NeuralNetwork()"
   ],
   "outputs": [],
   "execution_count": 54
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:53:13.820664Z",
     "start_time": "2025-01-24T11:53:13.815169Z"
    }
   },
   "source": [
    "# 看看网络结构\n",
    "model"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "NeuralNetwork(\n",
       "  (flatten): Flatten(start_dim=1, end_dim=-1)\n",
       "  (linear_relu_stack): Sequential(\n",
       "    (0): Linear(in_features=784, out_features=300, bias=True)\n",
       "    (1): ReLU()\n",
       "    (2): Linear(in_features=300, out_features=100, bias=True)\n",
       "    (3): ReLU()\n",
       "    (4): Linear(in_features=100, out_features=10, bias=True)\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 55
  },
  {
   "cell_type": "code",
   "source": "784*300+300+300*100+100+100*10+10  # 参数量：+300这些是偏置",
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-01-24T11:53:15.883155Z",
     "start_time": "2025-01-24T11:53:15.878802Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "266610"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 56
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:54:22.020299Z",
     "start_time": "2025-01-24T11:54:22.016428Z"
    }
   },
   "source": [
    "for name, param in model.named_parameters(): # 打印模型参数\n",
    "      print(name, param.shape)  # 实际是784*300的矩阵运算"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "linear_relu_stack.0.weight torch.Size([300, 784])\n",
      "linear_relu_stack.0.bias torch.Size([300])\n",
      "linear_relu_stack.2.weight torch.Size([100, 300])\n",
      "linear_relu_stack.2.bias torch.Size([100])\n",
      "linear_relu_stack.4.weight torch.Size([10, 100])\n",
      "linear_relu_stack.4.bias torch.Size([10])\n"
     ]
    }
   ],
   "execution_count": 57
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:56:42.110749Z",
     "start_time": "2025-01-24T11:56:42.097149Z"
    }
   },
   "source": [
    "# 看看模型参数\n",
    "list(model.parameters())  # 这种方法拿到模型的所有可学习参数,实际是权重和偏置。requires_grad=True，表明需要计算梯度，在反向传播时要更新"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Parameter containing:\n",
       " tensor([[-0.0034, -0.0250,  0.0204,  ...,  0.0188,  0.0280, -0.0285],\n",
       "         [ 0.0105, -0.0340, -0.0019,  ...,  0.0002, -0.0170, -0.0140],\n",
       "         [ 0.0073,  0.0195, -0.0162,  ...,  0.0247, -0.0146,  0.0021],\n",
       "         ...,\n",
       "         [-0.0035, -0.0316, -0.0162,  ...,  0.0235, -0.0352, -0.0332],\n",
       "         [-0.0244, -0.0273,  0.0275,  ..., -0.0230,  0.0018,  0.0058],\n",
       "         [-0.0150, -0.0172, -0.0104,  ...,  0.0313,  0.0289,  0.0198]],\n",
       "        requires_grad=True),\n",
       " Parameter containing:\n",
       " tensor([ 0.0246, -0.0290,  0.0136,  0.0289,  0.0242, -0.0298, -0.0076,  0.0049,\n",
       "          0.0285, -0.0234, -0.0180, -0.0329, -0.0112, -0.0060, -0.0247,  0.0075,\n",
       "          0.0219, -0.0175,  0.0154, -0.0225, -0.0059, -0.0074,  0.0243,  0.0204,\n",
       "         -0.0140, -0.0153, -0.0046, -0.0285, -0.0059,  0.0151, -0.0335, -0.0263,\n",
       "          0.0002, -0.0356,  0.0208,  0.0100,  0.0130,  0.0287,  0.0163,  0.0258,\n",
       "         -0.0136,  0.0246,  0.0188,  0.0195, -0.0152, -0.0104,  0.0321, -0.0273,\n",
       "          0.0322, -0.0093, -0.0015, -0.0287,  0.0026,  0.0125,  0.0194,  0.0243,\n",
       "          0.0241,  0.0117,  0.0114, -0.0351,  0.0317,  0.0003, -0.0269, -0.0016,\n",
       "          0.0145, -0.0044, -0.0004, -0.0085,  0.0023,  0.0030, -0.0122,  0.0354,\n",
       "          0.0053, -0.0081,  0.0310, -0.0161,  0.0318, -0.0321, -0.0057,  0.0344,\n",
       "         -0.0310, -0.0218,  0.0120,  0.0286, -0.0203,  0.0208, -0.0213,  0.0102,\n",
       "         -0.0131,  0.0134,  0.0081,  0.0143, -0.0278, -0.0225, -0.0140,  0.0231,\n",
       "         -0.0177,  0.0144,  0.0276,  0.0036, -0.0310,  0.0200, -0.0127,  0.0153,\n",
       "         -0.0179, -0.0273,  0.0263, -0.0170,  0.0161, -0.0320,  0.0075,  0.0183,\n",
       "          0.0048, -0.0007, -0.0332,  0.0214,  0.0338,  0.0173, -0.0200,  0.0237,\n",
       "          0.0011, -0.0141,  0.0263, -0.0096,  0.0114, -0.0077,  0.0070,  0.0257,\n",
       "          0.0208,  0.0060,  0.0119,  0.0016,  0.0195,  0.0166, -0.0007, -0.0183,\n",
       "         -0.0114, -0.0328, -0.0332,  0.0191, -0.0102,  0.0249, -0.0152,  0.0054,\n",
       "          0.0093,  0.0076,  0.0228, -0.0075, -0.0005, -0.0143,  0.0288,  0.0143,\n",
       "         -0.0072, -0.0080, -0.0345,  0.0268,  0.0299,  0.0310,  0.0217, -0.0015,\n",
       "         -0.0326,  0.0071,  0.0009,  0.0306,  0.0343,  0.0011, -0.0135, -0.0341,\n",
       "         -0.0261, -0.0260,  0.0237, -0.0249, -0.0203,  0.0107,  0.0007, -0.0159,\n",
       "         -0.0257, -0.0231, -0.0209,  0.0201, -0.0272, -0.0056, -0.0224, -0.0073,\n",
       "          0.0174,  0.0343, -0.0173,  0.0145, -0.0101,  0.0001, -0.0130, -0.0007,\n",
       "         -0.0339,  0.0112, -0.0117, -0.0123, -0.0268, -0.0055, -0.0227, -0.0086,\n",
       "         -0.0045,  0.0186,  0.0309, -0.0144, -0.0185,  0.0218,  0.0340,  0.0036,\n",
       "          0.0119,  0.0029, -0.0149, -0.0135,  0.0226,  0.0183, -0.0349, -0.0152,\n",
       "          0.0321,  0.0350, -0.0220, -0.0023,  0.0263, -0.0288,  0.0329,  0.0120,\n",
       "          0.0250,  0.0270,  0.0230,  0.0334, -0.0150, -0.0028,  0.0223, -0.0289,\n",
       "         -0.0263,  0.0226,  0.0097,  0.0284,  0.0157,  0.0051,  0.0226, -0.0200,\n",
       "          0.0284,  0.0049, -0.0206,  0.0351,  0.0071, -0.0256, -0.0188,  0.0121,\n",
       "          0.0276,  0.0295,  0.0202,  0.0234,  0.0025, -0.0086,  0.0257, -0.0302,\n",
       "         -0.0353,  0.0344,  0.0277,  0.0086,  0.0279,  0.0049, -0.0187, -0.0351,\n",
       "          0.0255,  0.0103, -0.0232,  0.0295,  0.0008,  0.0030,  0.0066, -0.0209,\n",
       "          0.0214, -0.0166,  0.0332,  0.0061,  0.0333, -0.0199,  0.0229,  0.0241,\n",
       "          0.0086, -0.0139,  0.0352,  0.0021,  0.0317,  0.0054,  0.0041, -0.0335,\n",
       "         -0.0025,  0.0044,  0.0333,  0.0116, -0.0143, -0.0131,  0.0329,  0.0117,\n",
       "         -0.0080, -0.0074, -0.0098,  0.0002], requires_grad=True),\n",
       " Parameter containing:\n",
       " tensor([[ 0.0409,  0.0503, -0.0122,  ..., -0.0182,  0.0203, -0.0143],\n",
       "         [ 0.0285,  0.0379, -0.0332,  ..., -0.0124,  0.0315, -0.0243],\n",
       "         [ 0.0072,  0.0195, -0.0238,  ...,  0.0214, -0.0192, -0.0085],\n",
       "         ...,\n",
       "         [-0.0384, -0.0404,  0.0402,  ...,  0.0340,  0.0457, -0.0194],\n",
       "         [-0.0169, -0.0542, -0.0495,  ...,  0.0243, -0.0051, -0.0073],\n",
       "         [ 0.0273, -0.0092,  0.0094,  ..., -0.0007,  0.0248,  0.0465]],\n",
       "        requires_grad=True),\n",
       " Parameter containing:\n",
       " tensor([ 0.0186,  0.0567, -0.0219, -0.0151,  0.0326,  0.0527,  0.0115,  0.0173,\n",
       "          0.0052,  0.0235,  0.0269,  0.0556,  0.0190, -0.0331,  0.0347,  0.0129,\n",
       "          0.0248,  0.0147,  0.0152,  0.0347, -0.0179,  0.0059,  0.0436,  0.0124,\n",
       "         -0.0522,  0.0542,  0.0197,  0.0472,  0.0549, -0.0109,  0.0066, -0.0050,\n",
       "         -0.0291, -0.0180, -0.0052,  0.0519, -0.0068, -0.0348, -0.0514,  0.0464,\n",
       "          0.0502, -0.0260, -0.0080,  0.0224, -0.0385,  0.0231, -0.0072,  0.0038,\n",
       "          0.0081,  0.0535, -0.0183,  0.0534, -0.0378, -0.0133,  0.0147,  0.0187,\n",
       "         -0.0080,  0.0492, -0.0139,  0.0264, -0.0554, -0.0019,  0.0339, -0.0194,\n",
       "          0.0220, -0.0110, -0.0377, -0.0134,  0.0358,  0.0023, -0.0133,  0.0097,\n",
       "         -0.0065,  0.0029,  0.0215,  0.0423,  0.0023,  0.0269, -0.0235, -0.0044,\n",
       "          0.0247, -0.0211,  0.0290, -0.0528, -0.0522,  0.0084, -0.0563, -0.0260,\n",
       "          0.0258, -0.0086,  0.0004, -0.0444, -0.0377, -0.0452,  0.0151,  0.0212,\n",
       "          0.0043,  0.0327,  0.0279,  0.0224], requires_grad=True),\n",
       " Parameter containing:\n",
       " tensor([[ 0.0720,  0.0730, -0.0483, -0.0479, -0.0207,  0.0307, -0.0059,  0.0935,\n",
       "          -0.0267, -0.0218, -0.0376, -0.0177, -0.0366,  0.0814, -0.0710, -0.0203,\n",
       "          -0.0574, -0.0664,  0.0703, -0.0642,  0.0306,  0.0791, -0.0963,  0.0810,\n",
       "           0.0804,  0.0240,  0.0939,  0.0946,  0.0090, -0.0503, -0.0480, -0.0978,\n",
       "          -0.0299,  0.0370,  0.0406,  0.0992, -0.0797, -0.0056,  0.0556,  0.0507,\n",
       "          -0.0120, -0.0163,  0.0534, -0.0460, -0.0525, -0.0924,  0.0717,  0.0622,\n",
       "          -0.0808, -0.0555,  0.0142, -0.0466,  0.0951, -0.0754, -0.0683,  0.0832,\n",
       "          -0.0989,  0.0644,  0.0727,  0.0980, -0.0622,  0.0687, -0.0113, -0.0486,\n",
       "           0.0723,  0.0385, -0.0622,  0.0072,  0.0207,  0.0921,  0.0069,  0.0279,\n",
       "          -0.0049, -0.0516,  0.0044,  0.0783,  0.0710,  0.0096,  0.0405,  0.0127,\n",
       "          -0.0652,  0.0493,  0.0697,  0.0701,  0.0731,  0.0213,  0.0529, -0.0927,\n",
       "           0.0399, -0.0184, -0.0072,  0.0308, -0.0775, -0.0780, -0.0657,  0.0283,\n",
       "           0.0793,  0.0397, -0.0401, -0.0463],\n",
       "         [-0.0691,  0.0357, -0.0159, -0.0748,  0.0943, -0.0505, -0.0839,  0.0439,\n",
       "          -0.0388,  0.0611, -0.0721, -0.0805,  0.0320,  0.0191, -0.0942, -0.0737,\n",
       "          -0.0602, -0.0327, -0.0743,  0.0880, -0.0805,  0.0093,  0.0466,  0.0976,\n",
       "          -0.0647, -0.0506,  0.0740,  0.0936,  0.0185, -0.0465, -0.0989, -0.0072,\n",
       "           0.0738, -0.0545, -0.0629,  0.0014,  0.0313,  0.0232, -0.0697, -0.0730,\n",
       "          -0.0044, -0.0297,  0.0164,  0.0278, -0.0569,  0.0600, -0.0228,  0.0074,\n",
       "          -0.0570, -0.0610, -0.0026, -0.0503, -0.0612,  0.0622,  0.0378,  0.0376,\n",
       "          -0.0816,  0.0041, -0.0974, -0.0567,  0.0559,  0.0588,  0.0162, -0.0328,\n",
       "          -0.0846, -0.0460,  0.0205,  0.0414,  0.0714,  0.0175,  0.0549,  0.0137,\n",
       "           0.0247,  0.0917, -0.0352,  0.0167, -0.0617, -0.0756, -0.0954, -0.0743,\n",
       "          -0.0130, -0.0403, -0.0839, -0.0926,  0.0484,  0.0043, -0.0510, -0.0634,\n",
       "          -0.0913,  0.0470,  0.0707,  0.0073,  0.0742, -0.0951, -0.0041, -0.0205,\n",
       "          -0.0618,  0.0636,  0.0375, -0.0089],\n",
       "         [-0.0664, -0.0356,  0.0037,  0.0138, -0.0086,  0.0124,  0.0467,  0.0933,\n",
       "           0.0287, -0.0479,  0.0453,  0.0209, -0.0736, -0.0176, -0.0523, -0.0588,\n",
       "          -0.0005, -0.0527, -0.0577,  0.0035,  0.0608, -0.0331,  0.0800,  0.0364,\n",
       "           0.0536, -0.0832,  0.0234, -0.0670, -0.0267,  0.0483, -0.0347,  0.0450,\n",
       "          -0.0155, -0.0680, -0.0534, -0.0906,  0.0871, -0.0768,  0.0376,  0.0310,\n",
       "           0.0052, -0.0166, -0.0405,  0.0989,  0.0806,  0.0414, -0.0567,  0.0144,\n",
       "           0.0234,  0.0538, -0.0446,  0.0145,  0.0903,  0.0883, -0.0313,  0.0288,\n",
       "          -0.0451,  0.0757,  0.0148,  0.0988, -0.0340,  0.0113,  0.0529,  0.0824,\n",
       "          -0.0515, -0.0905, -0.0904, -0.0262, -0.0793,  0.0701,  0.0664, -0.0764,\n",
       "           0.0629, -0.0742, -0.0780,  0.0283, -0.0761, -0.0026, -0.0322,  0.0428,\n",
       "           0.0349,  0.0128, -0.0579,  0.0698,  0.0283,  0.0977,  0.0588,  0.0389,\n",
       "           0.0258,  0.0477, -0.0722, -0.0818,  0.0382, -0.0692,  0.0005,  0.0058,\n",
       "           0.0494, -0.0786, -0.0353, -0.0612],\n",
       "         [-0.0537, -0.0016, -0.0572,  0.0693, -0.0494, -0.0350, -0.0384,  0.0165,\n",
       "          -0.0451,  0.0594,  0.0683,  0.0766, -0.0906,  0.0189, -0.0224, -0.0281,\n",
       "          -0.0744, -0.0803, -0.0064, -0.0046, -0.0830,  0.0931,  0.0868,  0.0817,\n",
       "          -0.0425, -0.0220,  0.0759,  0.0903,  0.0604,  0.0277,  0.0888, -0.0629,\n",
       "           0.0486,  0.0921,  0.0200,  0.0291, -0.0781,  0.0529, -0.0028,  0.0086,\n",
       "          -0.0442,  0.0415, -0.0208, -0.0334,  0.0629,  0.0862,  0.0812, -0.0209,\n",
       "          -0.0161,  0.0756,  0.0653,  0.0566,  0.0678, -0.0750,  0.0651,  0.0696,\n",
       "           0.0923, -0.0828, -0.0017,  0.0009,  0.0845,  0.0864,  0.0590, -0.0108,\n",
       "           0.0556, -0.0445, -0.0020,  0.0447, -0.0245, -0.0155, -0.0042, -0.0407,\n",
       "           0.0399, -0.0526, -0.0424, -0.0948,  0.0247, -0.0924, -0.0209, -0.0007,\n",
       "           0.0818, -0.0138, -0.0091, -0.0703,  0.0156,  0.0691,  0.0460, -0.0386,\n",
       "          -0.0854, -0.0250, -0.0147, -0.0107, -0.0604, -0.0194,  0.0562,  0.0221,\n",
       "           0.0407, -0.0745, -0.0419, -0.0113],\n",
       "         [-0.0295,  0.0693,  0.0097,  0.0785,  0.0534, -0.0115,  0.0221,  0.0350,\n",
       "          -0.0229, -0.0613,  0.0691, -0.0303,  0.0903, -0.0003, -0.0758, -0.0722,\n",
       "          -0.0961, -0.0283, -0.0163,  0.0371, -0.0991,  0.0554,  0.0625, -0.0691,\n",
       "          -0.0605,  0.0985, -0.0654,  0.0026,  0.0351,  0.0671, -0.0501, -0.0207,\n",
       "          -0.0320,  0.0913,  0.0999,  0.0431, -0.0965, -0.0872,  0.0298,  0.0605,\n",
       "           0.0911,  0.0887,  0.0094,  0.0837,  0.0447,  0.0651, -0.0606,  0.0236,\n",
       "           0.0380, -0.0408, -0.0140,  0.0047, -0.0842, -0.0489,  0.0182,  0.0903,\n",
       "          -0.0780, -0.0894,  0.0038,  0.0640, -0.0144,  0.0755, -0.0161,  0.0229,\n",
       "           0.0435,  0.0355, -0.0222,  0.0500,  0.0184, -0.0811,  0.0550, -0.0289,\n",
       "          -0.0272,  0.0205,  0.0037,  0.0248,  0.0080,  0.0848, -0.0157, -0.0283,\n",
       "          -0.0642,  0.0126, -0.0572, -0.0516, -0.0583, -0.0188,  0.0418, -0.0615,\n",
       "           0.0553, -0.0267,  0.0838, -0.0607, -0.0676, -0.0816,  0.0126,  0.0839,\n",
       "           0.0650,  0.0150, -0.0979,  0.0720],\n",
       "         [-0.0169, -0.0291, -0.0796, -0.0193,  0.0809,  0.0653, -0.0033,  0.0739,\n",
       "          -0.0297, -0.0701,  0.0540, -0.0160, -0.0411,  0.0443,  0.0316,  0.0433,\n",
       "           0.0899, -0.0327, -0.0697, -0.0480, -0.0523,  0.0399, -0.0846, -0.0820,\n",
       "           0.0376, -0.0226,  0.0229,  0.0144, -0.0459, -0.0808, -0.0865, -0.0269,\n",
       "          -0.0395, -0.0429,  0.0758,  0.0605, -0.0647,  0.0678, -0.0242, -0.0501,\n",
       "          -0.0242, -0.0669, -0.0276, -0.0735, -0.0733, -0.0672, -0.0254, -0.0121,\n",
       "          -0.0422, -0.0983, -0.0510,  0.0614,  0.0098, -0.0639,  0.0120,  0.0457,\n",
       "           0.0171, -0.0906,  0.0033,  0.0807, -0.0908,  0.0916, -0.0567, -0.0350,\n",
       "           0.0297, -0.0401,  0.0770,  0.0375, -0.0779,  0.0537,  0.0085, -0.0036,\n",
       "          -0.0076,  0.0663,  0.0141,  0.0198, -0.0291, -0.0748, -0.0804, -0.0998,\n",
       "           0.0422, -0.0508,  0.0842, -0.0305, -0.0651,  0.0825, -0.0836, -0.0119,\n",
       "          -0.0297, -0.0482,  0.0467, -0.0844,  0.0217, -0.0794,  0.0190,  0.0874,\n",
       "           0.0352, -0.0677,  0.0224, -0.0567],\n",
       "         [ 0.0225,  0.0033,  0.0059,  0.0736, -0.0434,  0.0561, -0.0291,  0.0296,\n",
       "          -0.0335, -0.0027,  0.0103,  0.0129, -0.0393,  0.0593, -0.0716,  0.0226,\n",
       "          -0.0041, -0.0397,  0.0612, -0.0618,  0.0957, -0.0038,  0.0862,  0.0257,\n",
       "           0.0972,  0.0270,  0.0667,  0.0239, -0.0148,  0.0677,  0.0860, -0.0907,\n",
       "           0.0169, -0.0784,  0.0449, -0.0458, -0.0432, -0.0547, -0.0742, -0.0821,\n",
       "          -0.0642,  0.0065,  0.0321, -0.0586,  0.0327,  0.0357, -0.0616,  0.0949,\n",
       "           0.0428, -0.0021,  0.0948,  0.0879, -0.0725, -0.0170, -0.0601, -0.0049,\n",
       "          -0.0774, -0.0929,  0.0662,  0.0028, -0.0149,  0.0454,  0.0347, -0.0107,\n",
       "           0.0834, -0.0717, -0.0121,  0.0690,  0.0064,  0.0999,  0.0246, -0.0102,\n",
       "          -0.0058,  0.0925,  0.0548, -0.0821, -0.0497,  0.0151, -0.0196,  0.0710,\n",
       "           0.0810,  0.0557, -0.0160, -0.0702, -0.0085, -0.0621, -0.0457, -0.0874,\n",
       "          -0.0001, -0.0476,  0.0381, -0.0443,  0.0348,  0.0546,  0.0498,  0.0054,\n",
       "          -0.0281, -0.0738, -0.0957, -0.0760],\n",
       "         [ 0.0323, -0.0007, -0.0163,  0.0718, -0.0991,  0.0587,  0.0568,  0.0754,\n",
       "          -0.0790,  0.0977, -0.0386,  0.0786,  0.0087, -0.0294, -0.0116, -0.0788,\n",
       "           0.0607,  0.0604,  0.0643,  0.0612, -0.0102, -0.0493, -0.0664,  0.0217,\n",
       "          -0.0274,  0.0106,  0.0699, -0.0855,  0.0081,  0.0220, -0.0378, -0.0347,\n",
       "           0.0627, -0.0920, -0.0110,  0.0812, -0.0120,  0.0805, -0.0627,  0.0478,\n",
       "           0.0493,  0.0242, -0.0769,  0.0265,  0.0354, -0.0239, -0.0137, -0.0818,\n",
       "           0.0147, -0.0675,  0.0239,  0.0904,  0.0381,  0.0896,  0.0685,  0.0040,\n",
       "          -0.0680, -0.0670, -0.0471,  0.0769,  0.0670,  0.0798, -0.0373,  0.0914,\n",
       "          -0.0970, -0.0621,  0.0928, -0.0040,  0.0956,  0.0629, -0.0495, -0.0969,\n",
       "           0.0882, -0.0115, -0.0217, -0.0316,  0.0743,  0.0477, -0.0103,  0.0906,\n",
       "          -0.0663,  0.0567,  0.0277, -0.0994,  0.0240, -0.0749,  0.0049, -0.0502,\n",
       "           0.0454,  0.0381,  0.0777, -0.0377, -0.0402, -0.0082, -0.0243,  0.0188,\n",
       "           0.0623,  0.0238,  0.0377,  0.0487],\n",
       "         [ 0.0002,  0.0992, -0.0205,  0.0443,  0.0297, -0.0625,  0.0977,  0.0421,\n",
       "           0.0573, -0.0011,  0.0774, -0.0299,  0.0497, -0.0141, -0.0185,  0.0709,\n",
       "           0.0188,  0.0407,  0.0901, -0.0672,  0.0978, -0.0380,  0.0039,  0.0670,\n",
       "          -0.0449, -0.0426,  0.0859,  0.0175,  0.0440,  0.0395,  0.0861,  0.0627,\n",
       "           0.0285, -0.0436,  0.0294, -0.0781, -0.0832, -0.0702,  0.0775,  0.0152,\n",
       "           0.0511, -0.0764, -0.0789,  0.0972, -0.0751,  0.0459, -0.0406,  0.0222,\n",
       "           0.0273,  0.0237, -0.0026,  0.0499, -0.0018, -0.0476,  0.0384,  0.0620,\n",
       "          -0.0922, -0.0785,  0.0298, -0.0895, -0.0012,  0.0137, -0.0203, -0.0047,\n",
       "           0.0846, -0.0305,  0.0001,  0.0665,  0.0229, -0.0384,  0.0864,  0.0899,\n",
       "           0.0644, -0.0038, -0.0409,  0.0531,  0.0758, -0.0533, -0.0261, -0.0850,\n",
       "           0.0680,  0.0263, -0.0746,  0.0152, -0.0025, -0.0287,  0.0090,  0.0164,\n",
       "           0.0384,  0.0401, -0.0540,  0.0280, -0.0218, -0.0059,  0.0522,  0.0819,\n",
       "          -0.0913, -0.0285, -0.0322,  0.0368],\n",
       "         [-0.0642,  0.0619,  0.0110,  0.0773, -0.0432, -0.0916,  0.0661,  0.0252,\n",
       "           0.0971,  0.0169,  0.0827,  0.0990,  0.0851, -0.0227, -0.0497, -0.0273,\n",
       "           0.0180,  0.0871, -0.0438,  0.0415, -0.0661,  0.0775, -0.0549,  0.0446,\n",
       "           0.0922,  0.0333,  0.0635, -0.0695,  0.0510, -0.0356,  0.0992, -0.0372,\n",
       "          -0.0281, -0.0994, -0.0980,  0.0316, -0.0530,  0.0694, -0.0229, -0.0637,\n",
       "           0.0025,  0.0212,  0.0343, -0.0776,  0.0994,  0.0843, -0.0638, -0.0743,\n",
       "           0.0946,  0.0744,  0.0161,  0.0028, -0.0083, -0.0720, -0.0778, -0.0822,\n",
       "          -0.0101, -0.0754,  0.0751, -0.0946, -0.0742, -0.0795,  0.0426,  0.0342,\n",
       "           0.0103,  0.0356, -0.0285, -0.0810, -0.0718, -0.0616, -0.0802,  0.0738,\n",
       "          -0.0840, -0.0878,  0.0236,  0.0251,  0.0495,  0.0054, -0.0315,  0.0878,\n",
       "          -0.0429,  0.0879,  0.0599,  0.0379,  0.0354, -0.0331,  0.0868,  0.0828,\n",
       "          -0.0222, -0.0609,  0.0939, -0.0636, -0.0278,  0.0079, -0.0299,  0.0494,\n",
       "          -0.0834,  0.0613,  0.0545,  0.0812]], requires_grad=True),\n",
       " Parameter containing:\n",
       " tensor([-0.0582, -0.0040, -0.0474,  0.0872, -0.0481,  0.0839, -0.0982,  0.0687,\n",
       "          0.0936,  0.0348], requires_grad=True)]"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 61
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T11:59:44.738215Z",
     "start_time": "2025-01-24T11:59:44.723897Z"
    }
   },
   "source": "model.state_dict()  # 这种方法用于获取模型参数及其名称的字典，看能看见参数属于模型的哪一部分",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "OrderedDict([('linear_relu_stack.0.weight',\n",
       "              tensor([[-0.0034, -0.0250,  0.0204,  ...,  0.0188,  0.0280, -0.0285],\n",
       "                      [ 0.0105, -0.0340, -0.0019,  ...,  0.0002, -0.0170, -0.0140],\n",
       "                      [ 0.0073,  0.0195, -0.0162,  ...,  0.0247, -0.0146,  0.0021],\n",
       "                      ...,\n",
       "                      [-0.0035, -0.0316, -0.0162,  ...,  0.0235, -0.0352, -0.0332],\n",
       "                      [-0.0244, -0.0273,  0.0275,  ..., -0.0230,  0.0018,  0.0058],\n",
       "                      [-0.0150, -0.0172, -0.0104,  ...,  0.0313,  0.0289,  0.0198]])),\n",
       "             ('linear_relu_stack.0.bias',\n",
       "              tensor([ 0.0246, -0.0290,  0.0136,  0.0289,  0.0242, -0.0298, -0.0076,  0.0049,\n",
       "                       0.0285, -0.0234, -0.0180, -0.0329, -0.0112, -0.0060, -0.0247,  0.0075,\n",
       "                       0.0219, -0.0175,  0.0154, -0.0225, -0.0059, -0.0074,  0.0243,  0.0204,\n",
       "                      -0.0140, -0.0153, -0.0046, -0.0285, -0.0059,  0.0151, -0.0335, -0.0263,\n",
       "                       0.0002, -0.0356,  0.0208,  0.0100,  0.0130,  0.0287,  0.0163,  0.0258,\n",
       "                      -0.0136,  0.0246,  0.0188,  0.0195, -0.0152, -0.0104,  0.0321, -0.0273,\n",
       "                       0.0322, -0.0093, -0.0015, -0.0287,  0.0026,  0.0125,  0.0194,  0.0243,\n",
       "                       0.0241,  0.0117,  0.0114, -0.0351,  0.0317,  0.0003, -0.0269, -0.0016,\n",
       "                       0.0145, -0.0044, -0.0004, -0.0085,  0.0023,  0.0030, -0.0122,  0.0354,\n",
       "                       0.0053, -0.0081,  0.0310, -0.0161,  0.0318, -0.0321, -0.0057,  0.0344,\n",
       "                      -0.0310, -0.0218,  0.0120,  0.0286, -0.0203,  0.0208, -0.0213,  0.0102,\n",
       "                      -0.0131,  0.0134,  0.0081,  0.0143, -0.0278, -0.0225, -0.0140,  0.0231,\n",
       "                      -0.0177,  0.0144,  0.0276,  0.0036, -0.0310,  0.0200, -0.0127,  0.0153,\n",
       "                      -0.0179, -0.0273,  0.0263, -0.0170,  0.0161, -0.0320,  0.0075,  0.0183,\n",
       "                       0.0048, -0.0007, -0.0332,  0.0214,  0.0338,  0.0173, -0.0200,  0.0237,\n",
       "                       0.0011, -0.0141,  0.0263, -0.0096,  0.0114, -0.0077,  0.0070,  0.0257,\n",
       "                       0.0208,  0.0060,  0.0119,  0.0016,  0.0195,  0.0166, -0.0007, -0.0183,\n",
       "                      -0.0114, -0.0328, -0.0332,  0.0191, -0.0102,  0.0249, -0.0152,  0.0054,\n",
       "                       0.0093,  0.0076,  0.0228, -0.0075, -0.0005, -0.0143,  0.0288,  0.0143,\n",
       "                      -0.0072, -0.0080, -0.0345,  0.0268,  0.0299,  0.0310,  0.0217, -0.0015,\n",
       "                      -0.0326,  0.0071,  0.0009,  0.0306,  0.0343,  0.0011, -0.0135, -0.0341,\n",
       "                      -0.0261, -0.0260,  0.0237, -0.0249, -0.0203,  0.0107,  0.0007, -0.0159,\n",
       "                      -0.0257, -0.0231, -0.0209,  0.0201, -0.0272, -0.0056, -0.0224, -0.0073,\n",
       "                       0.0174,  0.0343, -0.0173,  0.0145, -0.0101,  0.0001, -0.0130, -0.0007,\n",
       "                      -0.0339,  0.0112, -0.0117, -0.0123, -0.0268, -0.0055, -0.0227, -0.0086,\n",
       "                      -0.0045,  0.0186,  0.0309, -0.0144, -0.0185,  0.0218,  0.0340,  0.0036,\n",
       "                       0.0119,  0.0029, -0.0149, -0.0135,  0.0226,  0.0183, -0.0349, -0.0152,\n",
       "                       0.0321,  0.0350, -0.0220, -0.0023,  0.0263, -0.0288,  0.0329,  0.0120,\n",
       "                       0.0250,  0.0270,  0.0230,  0.0334, -0.0150, -0.0028,  0.0223, -0.0289,\n",
       "                      -0.0263,  0.0226,  0.0097,  0.0284,  0.0157,  0.0051,  0.0226, -0.0200,\n",
       "                       0.0284,  0.0049, -0.0206,  0.0351,  0.0071, -0.0256, -0.0188,  0.0121,\n",
       "                       0.0276,  0.0295,  0.0202,  0.0234,  0.0025, -0.0086,  0.0257, -0.0302,\n",
       "                      -0.0353,  0.0344,  0.0277,  0.0086,  0.0279,  0.0049, -0.0187, -0.0351,\n",
       "                       0.0255,  0.0103, -0.0232,  0.0295,  0.0008,  0.0030,  0.0066, -0.0209,\n",
       "                       0.0214, -0.0166,  0.0332,  0.0061,  0.0333, -0.0199,  0.0229,  0.0241,\n",
       "                       0.0086, -0.0139,  0.0352,  0.0021,  0.0317,  0.0054,  0.0041, -0.0335,\n",
       "                      -0.0025,  0.0044,  0.0333,  0.0116, -0.0143, -0.0131,  0.0329,  0.0117,\n",
       "                      -0.0080, -0.0074, -0.0098,  0.0002])),\n",
       "             ('linear_relu_stack.2.weight',\n",
       "              tensor([[ 0.0409,  0.0503, -0.0122,  ..., -0.0182,  0.0203, -0.0143],\n",
       "                      [ 0.0285,  0.0379, -0.0332,  ..., -0.0124,  0.0315, -0.0243],\n",
       "                      [ 0.0072,  0.0195, -0.0238,  ...,  0.0214, -0.0192, -0.0085],\n",
       "                      ...,\n",
       "                      [-0.0384, -0.0404,  0.0402,  ...,  0.0340,  0.0457, -0.0194],\n",
       "                      [-0.0169, -0.0542, -0.0495,  ...,  0.0243, -0.0051, -0.0073],\n",
       "                      [ 0.0273, -0.0092,  0.0094,  ..., -0.0007,  0.0248,  0.0465]])),\n",
       "             ('linear_relu_stack.2.bias',\n",
       "              tensor([ 0.0186,  0.0567, -0.0219, -0.0151,  0.0326,  0.0527,  0.0115,  0.0173,\n",
       "                       0.0052,  0.0235,  0.0269,  0.0556,  0.0190, -0.0331,  0.0347,  0.0129,\n",
       "                       0.0248,  0.0147,  0.0152,  0.0347, -0.0179,  0.0059,  0.0436,  0.0124,\n",
       "                      -0.0522,  0.0542,  0.0197,  0.0472,  0.0549, -0.0109,  0.0066, -0.0050,\n",
       "                      -0.0291, -0.0180, -0.0052,  0.0519, -0.0068, -0.0348, -0.0514,  0.0464,\n",
       "                       0.0502, -0.0260, -0.0080,  0.0224, -0.0385,  0.0231, -0.0072,  0.0038,\n",
       "                       0.0081,  0.0535, -0.0183,  0.0534, -0.0378, -0.0133,  0.0147,  0.0187,\n",
       "                      -0.0080,  0.0492, -0.0139,  0.0264, -0.0554, -0.0019,  0.0339, -0.0194,\n",
       "                       0.0220, -0.0110, -0.0377, -0.0134,  0.0358,  0.0023, -0.0133,  0.0097,\n",
       "                      -0.0065,  0.0029,  0.0215,  0.0423,  0.0023,  0.0269, -0.0235, -0.0044,\n",
       "                       0.0247, -0.0211,  0.0290, -0.0528, -0.0522,  0.0084, -0.0563, -0.0260,\n",
       "                       0.0258, -0.0086,  0.0004, -0.0444, -0.0377, -0.0452,  0.0151,  0.0212,\n",
       "                       0.0043,  0.0327,  0.0279,  0.0224])),\n",
       "             ('linear_relu_stack.4.weight',\n",
       "              tensor([[ 0.0720,  0.0730, -0.0483, -0.0479, -0.0207,  0.0307, -0.0059,  0.0935,\n",
       "                       -0.0267, -0.0218, -0.0376, -0.0177, -0.0366,  0.0814, -0.0710, -0.0203,\n",
       "                       -0.0574, -0.0664,  0.0703, -0.0642,  0.0306,  0.0791, -0.0963,  0.0810,\n",
       "                        0.0804,  0.0240,  0.0939,  0.0946,  0.0090, -0.0503, -0.0480, -0.0978,\n",
       "                       -0.0299,  0.0370,  0.0406,  0.0992, -0.0797, -0.0056,  0.0556,  0.0507,\n",
       "                       -0.0120, -0.0163,  0.0534, -0.0460, -0.0525, -0.0924,  0.0717,  0.0622,\n",
       "                       -0.0808, -0.0555,  0.0142, -0.0466,  0.0951, -0.0754, -0.0683,  0.0832,\n",
       "                       -0.0989,  0.0644,  0.0727,  0.0980, -0.0622,  0.0687, -0.0113, -0.0486,\n",
       "                        0.0723,  0.0385, -0.0622,  0.0072,  0.0207,  0.0921,  0.0069,  0.0279,\n",
       "                       -0.0049, -0.0516,  0.0044,  0.0783,  0.0710,  0.0096,  0.0405,  0.0127,\n",
       "                       -0.0652,  0.0493,  0.0697,  0.0701,  0.0731,  0.0213,  0.0529, -0.0927,\n",
       "                        0.0399, -0.0184, -0.0072,  0.0308, -0.0775, -0.0780, -0.0657,  0.0283,\n",
       "                        0.0793,  0.0397, -0.0401, -0.0463],\n",
       "                      [-0.0691,  0.0357, -0.0159, -0.0748,  0.0943, -0.0505, -0.0839,  0.0439,\n",
       "                       -0.0388,  0.0611, -0.0721, -0.0805,  0.0320,  0.0191, -0.0942, -0.0737,\n",
       "                       -0.0602, -0.0327, -0.0743,  0.0880, -0.0805,  0.0093,  0.0466,  0.0976,\n",
       "                       -0.0647, -0.0506,  0.0740,  0.0936,  0.0185, -0.0465, -0.0989, -0.0072,\n",
       "                        0.0738, -0.0545, -0.0629,  0.0014,  0.0313,  0.0232, -0.0697, -0.0730,\n",
       "                       -0.0044, -0.0297,  0.0164,  0.0278, -0.0569,  0.0600, -0.0228,  0.0074,\n",
       "                       -0.0570, -0.0610, -0.0026, -0.0503, -0.0612,  0.0622,  0.0378,  0.0376,\n",
       "                       -0.0816,  0.0041, -0.0974, -0.0567,  0.0559,  0.0588,  0.0162, -0.0328,\n",
       "                       -0.0846, -0.0460,  0.0205,  0.0414,  0.0714,  0.0175,  0.0549,  0.0137,\n",
       "                        0.0247,  0.0917, -0.0352,  0.0167, -0.0617, -0.0756, -0.0954, -0.0743,\n",
       "                       -0.0130, -0.0403, -0.0839, -0.0926,  0.0484,  0.0043, -0.0510, -0.0634,\n",
       "                       -0.0913,  0.0470,  0.0707,  0.0073,  0.0742, -0.0951, -0.0041, -0.0205,\n",
       "                       -0.0618,  0.0636,  0.0375, -0.0089],\n",
       "                      [-0.0664, -0.0356,  0.0037,  0.0138, -0.0086,  0.0124,  0.0467,  0.0933,\n",
       "                        0.0287, -0.0479,  0.0453,  0.0209, -0.0736, -0.0176, -0.0523, -0.0588,\n",
       "                       -0.0005, -0.0527, -0.0577,  0.0035,  0.0608, -0.0331,  0.0800,  0.0364,\n",
       "                        0.0536, -0.0832,  0.0234, -0.0670, -0.0267,  0.0483, -0.0347,  0.0450,\n",
       "                       -0.0155, -0.0680, -0.0534, -0.0906,  0.0871, -0.0768,  0.0376,  0.0310,\n",
       "                        0.0052, -0.0166, -0.0405,  0.0989,  0.0806,  0.0414, -0.0567,  0.0144,\n",
       "                        0.0234,  0.0538, -0.0446,  0.0145,  0.0903,  0.0883, -0.0313,  0.0288,\n",
       "                       -0.0451,  0.0757,  0.0148,  0.0988, -0.0340,  0.0113,  0.0529,  0.0824,\n",
       "                       -0.0515, -0.0905, -0.0904, -0.0262, -0.0793,  0.0701,  0.0664, -0.0764,\n",
       "                        0.0629, -0.0742, -0.0780,  0.0283, -0.0761, -0.0026, -0.0322,  0.0428,\n",
       "                        0.0349,  0.0128, -0.0579,  0.0698,  0.0283,  0.0977,  0.0588,  0.0389,\n",
       "                        0.0258,  0.0477, -0.0722, -0.0818,  0.0382, -0.0692,  0.0005,  0.0058,\n",
       "                        0.0494, -0.0786, -0.0353, -0.0612],\n",
       "                      [-0.0537, -0.0016, -0.0572,  0.0693, -0.0494, -0.0350, -0.0384,  0.0165,\n",
       "                       -0.0451,  0.0594,  0.0683,  0.0766, -0.0906,  0.0189, -0.0224, -0.0281,\n",
       "                       -0.0744, -0.0803, -0.0064, -0.0046, -0.0830,  0.0931,  0.0868,  0.0817,\n",
       "                       -0.0425, -0.0220,  0.0759,  0.0903,  0.0604,  0.0277,  0.0888, -0.0629,\n",
       "                        0.0486,  0.0921,  0.0200,  0.0291, -0.0781,  0.0529, -0.0028,  0.0086,\n",
       "                       -0.0442,  0.0415, -0.0208, -0.0334,  0.0629,  0.0862,  0.0812, -0.0209,\n",
       "                       -0.0161,  0.0756,  0.0653,  0.0566,  0.0678, -0.0750,  0.0651,  0.0696,\n",
       "                        0.0923, -0.0828, -0.0017,  0.0009,  0.0845,  0.0864,  0.0590, -0.0108,\n",
       "                        0.0556, -0.0445, -0.0020,  0.0447, -0.0245, -0.0155, -0.0042, -0.0407,\n",
       "                        0.0399, -0.0526, -0.0424, -0.0948,  0.0247, -0.0924, -0.0209, -0.0007,\n",
       "                        0.0818, -0.0138, -0.0091, -0.0703,  0.0156,  0.0691,  0.0460, -0.0386,\n",
       "                       -0.0854, -0.0250, -0.0147, -0.0107, -0.0604, -0.0194,  0.0562,  0.0221,\n",
       "                        0.0407, -0.0745, -0.0419, -0.0113],\n",
       "                      [-0.0295,  0.0693,  0.0097,  0.0785,  0.0534, -0.0115,  0.0221,  0.0350,\n",
       "                       -0.0229, -0.0613,  0.0691, -0.0303,  0.0903, -0.0003, -0.0758, -0.0722,\n",
       "                       -0.0961, -0.0283, -0.0163,  0.0371, -0.0991,  0.0554,  0.0625, -0.0691,\n",
       "                       -0.0605,  0.0985, -0.0654,  0.0026,  0.0351,  0.0671, -0.0501, -0.0207,\n",
       "                       -0.0320,  0.0913,  0.0999,  0.0431, -0.0965, -0.0872,  0.0298,  0.0605,\n",
       "                        0.0911,  0.0887,  0.0094,  0.0837,  0.0447,  0.0651, -0.0606,  0.0236,\n",
       "                        0.0380, -0.0408, -0.0140,  0.0047, -0.0842, -0.0489,  0.0182,  0.0903,\n",
       "                       -0.0780, -0.0894,  0.0038,  0.0640, -0.0144,  0.0755, -0.0161,  0.0229,\n",
       "                        0.0435,  0.0355, -0.0222,  0.0500,  0.0184, -0.0811,  0.0550, -0.0289,\n",
       "                       -0.0272,  0.0205,  0.0037,  0.0248,  0.0080,  0.0848, -0.0157, -0.0283,\n",
       "                       -0.0642,  0.0126, -0.0572, -0.0516, -0.0583, -0.0188,  0.0418, -0.0615,\n",
       "                        0.0553, -0.0267,  0.0838, -0.0607, -0.0676, -0.0816,  0.0126,  0.0839,\n",
       "                        0.0650,  0.0150, -0.0979,  0.0720],\n",
       "                      [-0.0169, -0.0291, -0.0796, -0.0193,  0.0809,  0.0653, -0.0033,  0.0739,\n",
       "                       -0.0297, -0.0701,  0.0540, -0.0160, -0.0411,  0.0443,  0.0316,  0.0433,\n",
       "                        0.0899, -0.0327, -0.0697, -0.0480, -0.0523,  0.0399, -0.0846, -0.0820,\n",
       "                        0.0376, -0.0226,  0.0229,  0.0144, -0.0459, -0.0808, -0.0865, -0.0269,\n",
       "                       -0.0395, -0.0429,  0.0758,  0.0605, -0.0647,  0.0678, -0.0242, -0.0501,\n",
       "                       -0.0242, -0.0669, -0.0276, -0.0735, -0.0733, -0.0672, -0.0254, -0.0121,\n",
       "                       -0.0422, -0.0983, -0.0510,  0.0614,  0.0098, -0.0639,  0.0120,  0.0457,\n",
       "                        0.0171, -0.0906,  0.0033,  0.0807, -0.0908,  0.0916, -0.0567, -0.0350,\n",
       "                        0.0297, -0.0401,  0.0770,  0.0375, -0.0779,  0.0537,  0.0085, -0.0036,\n",
       "                       -0.0076,  0.0663,  0.0141,  0.0198, -0.0291, -0.0748, -0.0804, -0.0998,\n",
       "                        0.0422, -0.0508,  0.0842, -0.0305, -0.0651,  0.0825, -0.0836, -0.0119,\n",
       "                       -0.0297, -0.0482,  0.0467, -0.0844,  0.0217, -0.0794,  0.0190,  0.0874,\n",
       "                        0.0352, -0.0677,  0.0224, -0.0567],\n",
       "                      [ 0.0225,  0.0033,  0.0059,  0.0736, -0.0434,  0.0561, -0.0291,  0.0296,\n",
       "                       -0.0335, -0.0027,  0.0103,  0.0129, -0.0393,  0.0593, -0.0716,  0.0226,\n",
       "                       -0.0041, -0.0397,  0.0612, -0.0618,  0.0957, -0.0038,  0.0862,  0.0257,\n",
       "                        0.0972,  0.0270,  0.0667,  0.0239, -0.0148,  0.0677,  0.0860, -0.0907,\n",
       "                        0.0169, -0.0784,  0.0449, -0.0458, -0.0432, -0.0547, -0.0742, -0.0821,\n",
       "                       -0.0642,  0.0065,  0.0321, -0.0586,  0.0327,  0.0357, -0.0616,  0.0949,\n",
       "                        0.0428, -0.0021,  0.0948,  0.0879, -0.0725, -0.0170, -0.0601, -0.0049,\n",
       "                       -0.0774, -0.0929,  0.0662,  0.0028, -0.0149,  0.0454,  0.0347, -0.0107,\n",
       "                        0.0834, -0.0717, -0.0121,  0.0690,  0.0064,  0.0999,  0.0246, -0.0102,\n",
       "                       -0.0058,  0.0925,  0.0548, -0.0821, -0.0497,  0.0151, -0.0196,  0.0710,\n",
       "                        0.0810,  0.0557, -0.0160, -0.0702, -0.0085, -0.0621, -0.0457, -0.0874,\n",
       "                       -0.0001, -0.0476,  0.0381, -0.0443,  0.0348,  0.0546,  0.0498,  0.0054,\n",
       "                       -0.0281, -0.0738, -0.0957, -0.0760],\n",
       "                      [ 0.0323, -0.0007, -0.0163,  0.0718, -0.0991,  0.0587,  0.0568,  0.0754,\n",
       "                       -0.0790,  0.0977, -0.0386,  0.0786,  0.0087, -0.0294, -0.0116, -0.0788,\n",
       "                        0.0607,  0.0604,  0.0643,  0.0612, -0.0102, -0.0493, -0.0664,  0.0217,\n",
       "                       -0.0274,  0.0106,  0.0699, -0.0855,  0.0081,  0.0220, -0.0378, -0.0347,\n",
       "                        0.0627, -0.0920, -0.0110,  0.0812, -0.0120,  0.0805, -0.0627,  0.0478,\n",
       "                        0.0493,  0.0242, -0.0769,  0.0265,  0.0354, -0.0239, -0.0137, -0.0818,\n",
       "                        0.0147, -0.0675,  0.0239,  0.0904,  0.0381,  0.0896,  0.0685,  0.0040,\n",
       "                       -0.0680, -0.0670, -0.0471,  0.0769,  0.0670,  0.0798, -0.0373,  0.0914,\n",
       "                       -0.0970, -0.0621,  0.0928, -0.0040,  0.0956,  0.0629, -0.0495, -0.0969,\n",
       "                        0.0882, -0.0115, -0.0217, -0.0316,  0.0743,  0.0477, -0.0103,  0.0906,\n",
       "                       -0.0663,  0.0567,  0.0277, -0.0994,  0.0240, -0.0749,  0.0049, -0.0502,\n",
       "                        0.0454,  0.0381,  0.0777, -0.0377, -0.0402, -0.0082, -0.0243,  0.0188,\n",
       "                        0.0623,  0.0238,  0.0377,  0.0487],\n",
       "                      [ 0.0002,  0.0992, -0.0205,  0.0443,  0.0297, -0.0625,  0.0977,  0.0421,\n",
       "                        0.0573, -0.0011,  0.0774, -0.0299,  0.0497, -0.0141, -0.0185,  0.0709,\n",
       "                        0.0188,  0.0407,  0.0901, -0.0672,  0.0978, -0.0380,  0.0039,  0.0670,\n",
       "                       -0.0449, -0.0426,  0.0859,  0.0175,  0.0440,  0.0395,  0.0861,  0.0627,\n",
       "                        0.0285, -0.0436,  0.0294, -0.0781, -0.0832, -0.0702,  0.0775,  0.0152,\n",
       "                        0.0511, -0.0764, -0.0789,  0.0972, -0.0751,  0.0459, -0.0406,  0.0222,\n",
       "                        0.0273,  0.0237, -0.0026,  0.0499, -0.0018, -0.0476,  0.0384,  0.0620,\n",
       "                       -0.0922, -0.0785,  0.0298, -0.0895, -0.0012,  0.0137, -0.0203, -0.0047,\n",
       "                        0.0846, -0.0305,  0.0001,  0.0665,  0.0229, -0.0384,  0.0864,  0.0899,\n",
       "                        0.0644, -0.0038, -0.0409,  0.0531,  0.0758, -0.0533, -0.0261, -0.0850,\n",
       "                        0.0680,  0.0263, -0.0746,  0.0152, -0.0025, -0.0287,  0.0090,  0.0164,\n",
       "                        0.0384,  0.0401, -0.0540,  0.0280, -0.0218, -0.0059,  0.0522,  0.0819,\n",
       "                       -0.0913, -0.0285, -0.0322,  0.0368],\n",
       "                      [-0.0642,  0.0619,  0.0110,  0.0773, -0.0432, -0.0916,  0.0661,  0.0252,\n",
       "                        0.0971,  0.0169,  0.0827,  0.0990,  0.0851, -0.0227, -0.0497, -0.0273,\n",
       "                        0.0180,  0.0871, -0.0438,  0.0415, -0.0661,  0.0775, -0.0549,  0.0446,\n",
       "                        0.0922,  0.0333,  0.0635, -0.0695,  0.0510, -0.0356,  0.0992, -0.0372,\n",
       "                       -0.0281, -0.0994, -0.0980,  0.0316, -0.0530,  0.0694, -0.0229, -0.0637,\n",
       "                        0.0025,  0.0212,  0.0343, -0.0776,  0.0994,  0.0843, -0.0638, -0.0743,\n",
       "                        0.0946,  0.0744,  0.0161,  0.0028, -0.0083, -0.0720, -0.0778, -0.0822,\n",
       "                       -0.0101, -0.0754,  0.0751, -0.0946, -0.0742, -0.0795,  0.0426,  0.0342,\n",
       "                        0.0103,  0.0356, -0.0285, -0.0810, -0.0718, -0.0616, -0.0802,  0.0738,\n",
       "                       -0.0840, -0.0878,  0.0236,  0.0251,  0.0495,  0.0054, -0.0315,  0.0878,\n",
       "                       -0.0429,  0.0879,  0.0599,  0.0379,  0.0354, -0.0331,  0.0868,  0.0828,\n",
       "                       -0.0222, -0.0609,  0.0939, -0.0636, -0.0278,  0.0079, -0.0299,  0.0494,\n",
       "                       -0.0834,  0.0613,  0.0545,  0.0812]])),\n",
       "             ('linear_relu_stack.4.bias',\n",
       "              tensor([-0.0582, -0.0040, -0.0474,  0.0872, -0.0481,  0.0839, -0.0982,  0.0687,\n",
       "                       0.0936,  0.0348]))])"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 62
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练\n",
    "\n",
    "pytorch的训练需要自行实现，包括\n",
    "1. 定义损失函数\n",
    "2. 定义优化器\n",
    "3. 定义训练步\n",
    "4. 训练"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T12:01:09.881241Z",
     "start_time": "2025-01-24T12:01:09.876768Z"
    }
   },
   "source": [
    "# 1. 定义损失函数，采用交叉熵损失\n",
    "loss_fct = nn.CrossEntropyLoss() # 内部先做softmax，然后计算交叉熵\n",
    "# 2. 定义优化器，采用SGD\n",
    "# Optimizers specified in the torch.optim package,随机梯度下降优化器，lr是学习率\n",
    "# momentum是动量，用来加速收敛，并防止震荡，一般取0.9或0.99；动量项会保留上一次更新的方向，并将其添加到当前更新中，从而使得更新更加平滑。\n",
    "optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9)"
   ],
   "outputs": [],
   "execution_count": 63
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T12:10:17.719109Z",
     "start_time": "2025-01-24T12:10:17.642004Z"
    }
   },
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "@torch.no_grad() # 装饰器，禁止反向传播（即在评估过程中不会计算梯度），节省内存（因为不需要更新模型参数）\n",
    "# 评估函数\n",
    "def evaluating(model, dataloader, loss_fct):\n",
    "    loss_list = [] # 记录损失\n",
    "    pred_list = [] # 记录预测\n",
    "    label_list = [] # 记录标签\n",
    "    for datas, labels in dataloader:  # 遍历每个批次，60000/32=1875\n",
    "        datas = datas.to(device) # 转到GPU\n",
    "        labels = labels.to(device) # 转到GPU\n",
    "        # 前向计算\n",
    "        logits = model(datas)  # 通过模型计算输出的 logits（未归一化的预测值）\n",
    "        loss = loss_fct(logits, labels)  # 使用损失函数计算当前批次的损失值\n",
    "        loss_list.append(loss.item()) # 记录损失\n",
    "        \n",
    "        preds = logits.argmax(axis=-1)    # 验证集预测,argmax返回最大值索引，从而获取每个样本的预测类别（最大值索引）\n",
    "        # print(preds)\n",
    "        pred_list.extend(preds.cpu().numpy().tolist()) # 将PyTorch张量转换为NumPy数组。只有当张量在CPU上时，这个转换才是合法的\n",
    "        # print(preds.cpu().numpy().tolist())\n",
    "        label_list.extend(labels.cpu().numpy().tolist())\n",
    "        \n",
    "    acc = accuracy_score(label_list, pred_list) # 用sklearn库计算准确率\n",
    "    return np.mean(loss_list), acc  # 返回平均损失和准确率\n"
   ],
   "outputs": [],
   "execution_count": 64
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T12:15:37.936990Z",
     "start_time": "2025-01-24T12:12:39.344283Z"
    }
   },
   "source": [
    "# 训练\n",
    "def training(model, train_loader, val_loader, epoch, loss_fct, optimizer, eval_step=500):\n",
    "    \"\"\"\n",
    "    :param model: \n",
    "    :param train_loader: \n",
    "    :param val_loader: \n",
    "    :param epoch: 训练批次\n",
    "    :param loss_fct: 损失函数\n",
    "    :param optimizer: 优化器\n",
    "    :param eval_step:每多少步评估一次，防止过拟合 （早停）\n",
    "    :return: \n",
    "    \"\"\"\n",
    "    record_dict = {\n",
    "        \"train\": [],\n",
    "        \"val\": []\n",
    "    }\n",
    "    \n",
    "    global_step = 0 # 全局步数\n",
    "    model.train() # 进入训练模式,评估模式不会求梯度\n",
    "    with tqdm(total=epoch * len(train_loader)) as pbar: # 图形化进度条 20(epoch)*1875\n",
    "        for epoch_id in range(epoch): # 训练epoch次\n",
    "            # training\n",
    "            for datas, labels in train_loader: # 执行次数是60000/32=1875\n",
    "                datas = datas.to(device) # datas尺寸是[batch_size,1,28,28]\n",
    "                labels = labels.to(device) # labels尺寸是[batch_size]\n",
    "                # 梯度清空\n",
    "                optimizer.zero_grad()\n",
    "                # 模型前向计算\n",
    "                logits = model(datas)\n",
    "                # 计算损失\n",
    "                loss = loss_fct(logits, labels)\n",
    "                # 梯度回传，loss.backward()会计算梯度，loss对模型参数求导\n",
    "                loss.backward()\n",
    "                # 调整优化器，包括学习率的变动等,优化器的学习率会随着训练的进行而减小，更新w,b\n",
    "                optimizer.step() # 梯度是计算并存储在模型参数的 .grad属性中，优化器使用这些存储的梯度来更新模型参数\n",
    "\n",
    "                preds = logits.argmax(axis=-1) # 训练集预测\n",
    "                acc = accuracy_score(labels.cpu().numpy(), preds.cpu().numpy())   # 计算准确率，numpy、list都可以\n",
    "                loss = loss.cpu().item() # 损失转到CPU，item()取值,一个数值\n",
    "                # record\n",
    "                \n",
    "                record_dict[\"train\"].append({\n",
    "                    \"loss\": loss, \"acc\": acc, \"step\": global_step\n",
    "                }) # 记录训练集信息，每一步的损失，准确率，步数\n",
    "                \n",
    "                # evaluating\n",
    "                if global_step % eval_step == 0:  # 每eval_step步评估一次,不每次评估一次，太慢了\n",
    "                    model.eval() # 进入评估模式\n",
    "                    val_loss, val_acc = evaluating(model, val_loader, loss_fct)\n",
    "                    record_dict[\"val\"].append({\n",
    "                        \"loss\": val_loss, \"acc\": val_acc, \"step\": global_step\n",
    "                    })\n",
    "                    model.train() # 要重新进入训练模式\n",
    "\n",
    "                # udate step\n",
    "                global_step += 1 # 全局步数加1\n",
    "                pbar.update(1) # 更新进度条\n",
    "                pbar.set_postfix({\"epoch\": epoch_id}) # 设置进度条显示停止时的epoch信息\n",
    "        \n",
    "    return record_dict\n",
    "        \n",
    "\n",
    "epoch = 20 # 改为40\n",
    "model = model.to(device)\n",
    "record = training(model, train_loader, val_loader, epoch, loss_fct, optimizer, eval_step=1000)"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/37500 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "f2a1f22219c04bc49d819fbd3c97a056"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 67
  },
  {
   "metadata": {},
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "37500"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 66,
   "source": "1875*20"
  },
  {
   "cell_type": "code",
   "source": "record[\"train\"][-5:]  # 最后5个训练批次的记录",
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-01-24T12:24:19.837867Z",
     "start_time": "2025-01-24T12:24:19.832989Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'loss': 0.35236403346061707, 'acc': 0.875, 'step': 37495},\n",
       " {'loss': 0.16364116966724396, 'acc': 0.90625, 'step': 37496},\n",
       " {'loss': 0.06494905799627304, 'acc': 1.0, 'step': 37497},\n",
       " {'loss': 0.348178893327713, 'acc': 0.875, 'step': 37498},\n",
       " {'loss': 0.29477348923683167, 'acc': 0.875, 'step': 37499}]"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 69
  },
  {
   "cell_type": "code",
   "source": [
    "record[\"val\"][-5:]"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2025-01-24T12:24:20.986508Z",
     "start_time": "2025-01-24T12:24:20.981382Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'loss': 0.3372804693187388, 'acc': 0.8835, 'step': 33000},\n",
       " {'loss': 0.3353109520416671, 'acc': 0.8826, 'step': 34000},\n",
       " {'loss': 0.32068882029824936, 'acc': 0.8895, 'step': 35000},\n",
       " {'loss': 0.3200474422924911, 'acc': 0.889, 'step': 36000},\n",
       " {'loss': 0.3242164459853127, 'acc': 0.8876, 'step': 37000}]"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 70
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T12:37:50.403689Z",
     "start_time": "2025-01-24T12:37:50.228824Z"
    }
   },
   "source": [
    "# 画线要注意的是，损失是不一定在0到1之间的\n",
    "def plot_learning_curves(record_dict, sample_step=1000):\n",
    "    # build DataFrame\n",
    "    train_df = pd.DataFrame(record_dict[\"train\"]).set_index(\"step\").iloc[::sample_step]\n",
    "    val_df = pd.DataFrame(record_dict[\"val\"]).set_index(\"step\")\n",
    "    last_step = train_df.index[-1] # 最后一步的步数\n",
    "    # print(train_df.columns)\n",
    "    print(train_df['acc'])  # 有loss和acc两个列\n",
    "    print(val_df['acc'])\n",
    "    \n",
    "    # plot\n",
    "    fig_num = len(train_df.columns) # 画几张图,分别是损失和准确率\n",
    "    fig, axs = plt.subplots(1, fig_num, figsize=(5 * fig_num, 5))  # 1行fig_num列，图大小5*fig_num\n",
    "    for idx, item in enumerate(train_df.columns):  # idx是列索引，item是列名\n",
    "        # print(train_df[item].values)\n",
    "        axs[idx].plot(train_df.index, train_df[item], label=f\"train_{item}\")\n",
    "        axs[idx].plot(val_df.index, val_df[item], label=f\"val_{item}\")\n",
    "        axs[idx].grid() # 显示网格\n",
    "        axs[idx].legend() # 显示图例\n",
    "        axs[idx].set_xticks(range(0, last_step, 5000)) # 设置x轴刻度\n",
    "        axs[idx].set_xticklabels(map(lambda x: f\"{int(x/1000)}k\", range(0, last_step, 5000))) # 设置x轴标签\n",
    "        axs[idx].set_xlabel(\"step\")\n",
    "    \n",
    "    plt.show()\n",
    "\n",
    "plot_learning_curves(record)  #横坐标是 steps"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "step\n",
      "0        0.90625\n",
      "1000     0.93750\n",
      "2000     0.87500\n",
      "3000     0.90625\n",
      "4000     0.90625\n",
      "5000     0.90625\n",
      "6000     0.93750\n",
      "7000     0.93750\n",
      "8000     0.84375\n",
      "9000     0.93750\n",
      "10000    0.84375\n",
      "11000    0.81250\n",
      "12000    0.96875\n",
      "13000    0.93750\n",
      "14000    0.93750\n",
      "15000    0.90625\n",
      "16000    0.93750\n",
      "17000    0.84375\n",
      "18000    0.96875\n",
      "19000    0.87500\n",
      "20000    0.96875\n",
      "21000    0.93750\n",
      "22000    0.90625\n",
      "23000    0.84375\n",
      "24000    0.93750\n",
      "25000    0.93750\n",
      "26000    0.90625\n",
      "27000    0.84375\n",
      "28000    0.90625\n",
      "29000    0.81250\n",
      "30000    0.87500\n",
      "31000    0.96875\n",
      "32000    0.90625\n",
      "33000    0.93750\n",
      "34000    0.93750\n",
      "35000    0.87500\n",
      "36000    0.93750\n",
      "37000    0.93750\n",
      "Name: acc, dtype: float64\n",
      "step\n",
      "0        0.8707\n",
      "1000     0.8695\n",
      "2000     0.8723\n",
      "3000     0.8757\n",
      "4000     0.8740\n",
      "5000     0.8730\n",
      "6000     0.8756\n",
      "7000     0.8794\n",
      "8000     0.8774\n",
      "9000     0.8798\n",
      "10000    0.8787\n",
      "11000    0.8782\n",
      "12000    0.8756\n",
      "13000    0.8832\n",
      "14000    0.8825\n",
      "15000    0.8797\n",
      "16000    0.8816\n",
      "17000    0.8787\n",
      "18000    0.8834\n",
      "19000    0.8844\n",
      "20000    0.8829\n",
      "21000    0.8768\n",
      "22000    0.8873\n",
      "23000    0.8831\n",
      "24000    0.8830\n",
      "25000    0.8864\n",
      "26000    0.8799\n",
      "27000    0.8787\n",
      "28000    0.8817\n",
      "29000    0.8860\n",
      "30000    0.8822\n",
      "31000    0.8815\n",
      "32000    0.8751\n",
      "33000    0.8835\n",
      "34000    0.8826\n",
      "35000    0.8895\n",
      "36000    0.8890\n",
      "37000    0.8876\n",
      "Name: acc, dtype: float64\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ],
      "image/png": "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1S5+6Msxd+5c6Nq1KyQnJ8PEiRNh165djhzrDTfc0GZbT506NSJjnT9/Ppx++umiY33nzp3hsssugx07dvg8pq6uDm6//XbIycmBtLQ0uPLKK6GoqMiRYz3vvPPabNtbbrnF9rEuWLAARowYITeAGzduHHz66aeO26Zax+uU7cqYC1+b2s91Sct4+dpk3Vidcg5107VpQRRfl9pdMLRw4UK4++67heXf+vXrYeTIkTBlyhQoLi4GpzF8+HA4evSofPvmm2/AKVRXV4tthxdvNZ555hn405/+BK+99hp8//33kJqaKrYzHthOGyuCFxjltv773/8OkeDLL78UJ77Vq1fDsmXLoLGxESZPniw+A3HXXXfBf//7X/jnP/8pHn/kyBG44oorHDlWZNasWT7bFvcNu+nRowc89dRTsG7dOli7di1ccMEFcOmll8KWLVsctU21jtcp25UxD742ta/rEsLXpsiN1SnnUDddm3pE83WptZ0xZsyY1ttvv12+39zc3NqtW7fW+fPni/u4SRYtWiT/fe7cua15eXmtGzZssHWcDz/8cOvIkSMD/t0p41QbS0tLixjLs88+K/+uvLy8NTExsfXvf/+7uL9v3z7xvB9//FHcb2pqap05c2br4MGDWw8cOGDbWJHrr7++9dJLLw34nEiNFSkuLhbv/eWXX8rbMT4+vvWf//yn/Jht27aJx6xatUrcX7Fihbh//Phxcb+6urp16tSprWeeeab8OzvGipx77rmtd9xxR8DnRGqsSFZWVuvf/vY3R29TtfE6fbsyxuBrU/u9LqmNF+FrkzVjdfo51E3XpqwouS61q8xQQ0ODiGgxNU506NBB3F+1apXPY/Hc9Jvf/Abeeecd+Prrr0Vq0G4wfY/p8379+sG1114LBw8ebPMYJ4zTn3379kFhYaHPdu7YsaOQffhvZ6S+vh6uvvpqoXvGz9CrV6+IaFkxnT548GC49dZboaysTPVxdo/1xIkT4md2drb4ifsvrnIpty1KVHAcatsWtbmTJk2ClpYWsUKWmZlp21iJ9957D3Jzc+Gkk06COXPmQE1Njerz7Rprc3MzfPDBB2KVENP8Tt6mauN16nZljMPXJutx43UJ4WuT+WN16jnUTdem5ii7LsVBO6K0tFR8gV26dPH5Pd7fvn27fL+pqQl++ctfwo8//ijS/927d7d9rHiCfuut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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 75
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 评估"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-24T12:40:47.787635Z",
     "start_time": "2025-01-24T12:40:47.034596Z"
    }
   },
   "source": [
    "# dataload for evaluating\n",
    "\n",
    "model.eval() # 进入评估模式\n",
    "loss, acc = evaluating(model, val_loader, loss_fct)\n",
    "print(f\"loss:     {loss:.4f}\\naccuracy: {acc:.4f}\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.3311\n",
      "accuracy: 0.8860\n"
     ]
    }
   ],
   "execution_count": 76
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
